2

我正在使用 PHP (Codeigniter) 和 Phils RESTserver 开发一个 API。我正在使用带有密码和盐的 crypt() 创建一个哈希。

问题是作为 crypt() 算法结果的哈希在我的本地机器和服务器上是不同的。

它在本地工作正常,但在服务器上不能正常工作(简称)。我知道密码和盐是相同的,因为我尝试将它们硬编码为。

来自本地机器的哈希:

$2a$10$g6J7CUjJvB0JpTd7UcrowePEbqp/oBmZEpd7vS.5HFYx38f08Tb/a

来自服务器的哈希:

$2jkP2/LlC/H6

有什么问题?

(服务器正在运行 centos 5)。

4

1 回答 1

3

您的 PHP 版本可能不支持 crypt 的河豚散列。输出中的 $2a$ 表明您正在尝试使用 CRYPT_BLOWFISH,这可能在两个平台上都不可用。

http://uk.php.net/crypt

PHP 5.3.2 中修复了一个错误:

修复了无效回合的 Blowfish 行为以返回“失败”字符串(“*0”或“*1”),而不是退回到 DES。

所以我猜你的服务器的哈希回退到 DES,因为它只包含你的盐的前 2 个字符。

于 2011-08-14T18:16:46.510 回答