我正在使用PHP(Codeigniter)和Phils RESTserver开发API。 我正在使用crypt()创建一个带密码和salt的哈希。
问题是crypt()算法的结果是不同的 在我的本地机器和服务器上。
它在本地工作正常但不在服务器上(简称)。我知道密码和盐是一样的,因为我尝试了硬编码。
来自本地机器的哈希:
$2a$10$g6J7CUjJvB0JpTd7UcrowePEbqp/oBmZEpd7vS.5HFYx38f08Tb/a
来自服务器的哈希:
$2jkP2/LlC/H6
有什么不对?
(服务器正在运行centos 5)。
答案 0 :(得分:3)
您的PHP版本可能不支持针对crypt的blowfish哈希。输出中的$ 2a $表示您正在尝试使用CRYPT_BLOWFISH,这可能无法在两个平台上使用。
PHP 5.3.2中修复了一个错误:
修复无效回合中的Blowfish行为以返回“失败”字符串 (“* 0”或“* 1”),而不是回退到DES。
所以我猜你服务器的哈希值会回落到DES,因为它只包含你盐的前两个字符。