2014-02-13 68 views
2

我使用PHP的crypt加密使用PHP的crypt

继其在加密的一个问题是我的代码:

echo $ret = crypt('[email protected]','$2y$10$XLLl50bLyTWfjcvCAxwGRu/px2Q.LXN0fHpD1KN2CQCMx/tpL1V62'); 

1)当在PHP中使用隐窝版本5.4.22 它的结果:

$2y$10$XLLl50bLyTWfjcvCAxwGRu/px2Q.LXN0fHpD1KN2CQCMx/tpL1V62 

2)当用PHP版使用5.2.17它导致

$25nFTQHtfjVg 

我想要和1相同的结果。

+3

您是否知道1)中的第一个结果显示crypt函数的第二个输入?我不想让我的输入作为输出回来。 – Samuel

+0

@Samuel你知道这是预期的行为吗? – TimWolla

+0

PHP 5.2即将结束。你其实不想要那样。 - -1:只想要某物。不符合编程问题。编辑:羞辱你upvoters(:)):甚至更多的票数比重复,存在几个月,并有答案(!)。 – hakre

回答

1

问题是2y河豚前缀。它是在PHP 5.3.7中的安全问题之后引入的,因此PHP 5.2不知道它,看到一个无效的$salt并生成无效的散列。

PHP 5.2中的等价物是2a,但它可能会受到上述安全问题(我没有检查)的影响。

1

manual。我开始知道他们在5.3.7上引入了更新 $ 2y $ Blowfish模式。所以在PHP 5.2.17中你可能会得到DES。哈希的类型取决于您提供的盐。