Enhancing Password Based Key Derivation Techniques