【发布时间】:2013-07-10 00:34:49
【问题描述】:
我有一个在 PHP 5.2.10 版本上运行的系统不幸的是,最初的程序员误解了 crypt() 是如何实现的。
$crypt = crypt(trim($cuPassword), CRYPT_BLOWFISH);
// The programmer thought this is how you configure a blowfish cipher
nb CRYPT_BLOWFISH 在这台机器上的值为零。
这可以产生一个随机的密码哈希值,例如 0$oZ534I2VvSw
今天,我将软件迁移到PHP 5.4.9,发现$crypt变成了*0,即由于salt无效导致的错误。
我的问题是我有一个无法再验证的登录密码表。我的问题:有没有一种方法可以重新创建在 5.2 版下运行的原始密码?当您将“0”作为盐传递时,实现了什么哈希?
【问题讨论】:
-
进一步分析:它似乎默认为使用“0$”作为盐的 CRYPT_STD_DES。较新版本的 PHP 将其视为无效盐而拒绝。
-
你在使用 Suhosin 补丁吗?因为这种行为不遵循我可以重现的普通 PHP 行为。