Support for crypt() password hashing

Using crypt() is much more secure than homemade salted hashing. Key difference is computational complexity: default md5 hash (even salted) can be reversed as a breeze. Even sha* hashes.

You must at least use HMAC-based salting, not just hash(a+b) due to weaknesses caused by block nature of general-purpose hashes, but...

General-purpose hash algorithms has high hashing speed by design. That is unacceptable in case of storing passwords. Special algorithms such as bcrypt, scrypt, PBKDF2, etc must be used. Easiest way to implement strong hashing is to use special system function for it — crypt().