PHP:如何在debian服务器上启用河豚哈希

我正在试图使河豚哈希可用于在Debian服务器上的PHP。

取自crypt()函数( http://php.net/manual/en/function.crypt.php )的php手册,下面的代码检查密码函数…

<?php echo("DES is " . CRYPT_STD_DES."<br>Extended DES is ".CRYPT_EXT_DES."<br>MD5 is ".CRYPT_MD5."<br>BlowFish is ".CRYPT_BLOWFISH."<br>"); if (CRYPT_STD_DES == 1) { echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "<br>\n"; } if (CRYPT_EXT_DES == 1) { echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "<br>\n"; } if (CRYPT_MD5 == 1) { echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "<br>\n"; } if (CRYPT_BLOWFISH == 1) { echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "<br>\n"; } if (CRYPT_SHA256 == 1) { echo 'SHA-256: ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "<br>\n"; } if (CRYPT_SHA512 == 1) { echo 'SHA-512: ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "<br>\n"; } echo "System salt size: ". CRYPT_SALT_LENGTH; ?> 

我的服务器上的结果显示以下散列可用:

testDES是1扩展DES是0 MD5是1 BlowFish是0标准DES:rl.3StKT.4T8M MD5:$ 1 $ rasmusle $ rISCgZzpwk3UhDidwXvin0

而在我的本地Ubuntu机器上,我似乎有河豚和沙家庭可用。

我需要安装在debian 5.0上运行在PHP上的blowfish吗?

glibc的crypt()函数不支持$ 2a $ blowfish hashing。 大概如果你追踪其他发行版正在应用的补丁,你可以用这个补丁重build你的glibc。 这个网站链接到一个补丁glibc 2.10.1,你可能不得不搏斗应用到lenny的glibc 2.7。 如果幸运的话,PHP会检测crypt()在运行时可以执行的操作,否则可能需要重新编译PHP。

根据PHP的crypt文档 ,从php5.3开始,PHP有自己的crypt()实现,可以处理本地系统不支持的哈希algorithm。 您可以从php53 dotdeb存储库获取为lenny(oldstable)构build的php 5.3包。

如果你不能使用5.3,那么dotdeb的5.2旧版本库中的php5.2可能会有一个新的硬化/ suhosin补丁来添加CRYPT_BLOWFISH。