When verifying an existing encrypted string you should use the encrypted text as the salt (like `crypt($plain, $crypted) eq $crypted'). This allows your code to work with the standard `crypt' and with more exotic implementations.