2013-02-22 55 views
4

代码:不同版本的隐窝)PHP不同的结果(

echo $a = 'stackoverflow'; 
echo '<br>'; 
echo $b = '$2a$10$bf57caf7e1fa23e4b975ab'; 
echo '<br>CRYPT:<br>'; 
echo crypt($a, $b); 

结果:

PHP 5.2.5

stackoverflow 
$2a$10$bf57caf7e1fa23e4b975ab 
CRYPT: 
$2.LaeiP21fsQ 

PHP 5.4.4

stackoverflow 
$2a$10$bf57caf7e1fa23e4b975ab 
CRYPT: 
$2a$10$bf57caf7e1fa23e4b975aOhXjTtYrqOYLfHsxdOxGRhF03.LtKewW 

我想脚本移动到新的服务器用PHP 5.4.4 我想获得为5.2.5哈希同样的效果,否则,如果我使用盐结尾$我会丢失一些数据

- 结果是一样的

我这样说的:

由于PHP 5.3.0的,PHP包含了它自己的实现,并且如果系统缺乏支持一个或多个的算法将使用 。

但算法不应该不同。

请帮忙。

+1

也许这有助于:http://www.php.net/security/crypt_blowfish.php – 2013-02-22 10:06:55

+0

我发现这个http://bugs.php.net/bug.php?id=60073&edit=1 – Kubol 2013-02-22 11:08:33

+1

你链接的错误到...不是一个错误。阅读文件底部的解释说明。 >>“您在PHP的早期版本 上获得了此输出,其中CRYPT_BLOWFISH不受支持,或者可能是使用了错误版本 。” – Jon 2013-02-24 10:47:51

回答

1

在PHP 5.3.0之前,Blowfish仅在系统的C库提供(并且几乎没有人提供)时才可用。在没有Blowfish实现的系统中传递Blowfish盐会导致算法选择的废话 - 通常是DES哈希。