PHP7 中旧散列盐的 crypt() 回退

crypt() fallback for old hash salts in PHP7

我正在努力将我的代码库升级到 PHP-7,我遇到了一些老用户的问题,他们的 salt 格式与 DES 不兼容。我的想法是对用户进行身份验证,然后将 hash salt 转换为与新 crypt 兼容的新格式,例如 Blowfish。

当我尝试将 'crypt()' 与旧盐一起使用以便在更改盐之前对用户进行身份验证时出现问题,我收到以下错误:

crypt(): Supplied salt is not valid for DES. Possible bug in provided salt format.

有没有办法将 crypt(或替代函数)与其他算法一起使用,以便我可以使用旧格式的 salt?

对于有同样问题的人,我使用 password_verify 解决了它,实际上在下面使用 password_hash,它支持现有的密码哈希,正如 Joachim 所建议的。

你只需要记住一件事,password_verify 有一个特定的时间 运行。如果您使用的是密码,强烈推荐。