为加密启用基于河豚的哈希支持


13

如何在Linux(Debian)服务器上为影子密码和PHP启用crypt_blowfish支持?

我指的是OpenBSD样式的基于Blowfish的bcrypt,在PHP中称为CRYPT_BLOWFISH。

据我所知,没有适用于Debian的软件包,为使PHP启用此哈希算法还需要其他哪些选择?

注意:
PHP的crypt()功能与底层操作系统提供的C库crypt(3)函数相对直接地接口。

更新
包的命名不应该(应该)那么清晰。
PEAR包crypt_blowfish的是一个简易替换为PHP的mcrypt扩展,允许快速双向 Blowfish加密。

而且Debian BCrypt软件包 也是“正常”双向河豚算法的实现。

我正在寻找的是用于哈希密码的Bcrypt-hash实现。


“ pear install Crypt_blowfish”不起作用吗?
cori

pear crypt_blowfish软件包是“常规”双向河豚加密算法。我正在寻找基于河豚的哈希算法。
雅科

嗯,现在我看到了问题。
科里

不知道您可以在问题上获得比当前代表更高的赏金。有趣。
巴拿马杯

代表立即被扣除,因此他有〜200个代表,现在有〜50个。
ceejayoz

Answers:


9

您需要在debian中安装的软件包是libpam-unix2

然后,您将必须在下编辑以下文件/etc/pam.d/,并将所有pam_unix.so用法更改为pam_unix2.so

  • 普通账户
  • 普通认证
  • 通用密码
  • 普通会议

最后,编辑common-password文件并将“ md5”参数替换为“ blowfish”。

进行这些修改后更新的密码将使用河豚来散列。现有的影子密码未修改。资源

要在PHP中使用河豚,您可以向提供河豚盐crypt()。像这样:

crypt('sting', '$2a$07$' . substr('saltsaltsalt', 0, CRYPT_SALT_LENGTH) ) 

您应该首先检查CRYPT_BLOWFISH == 1。并且您需要使用足够长的盐,该盐等于(或大于)22个字符。 资源


嗯,进行了这些更改之后,由于某种原因,CRYPT_BLOWFISH仍不等于1。
卡扎伊2011年

1
一个警告:如果您的pam_unix2版本不支持当前用于用户密码的哈希算法,则该用户可能无法登录。有些帐户使用SHA512,无法登录,但是使用MD5的帐户可以。您可以从root用户设置这些密码,因为从root passwd用户运行时不需要输入旧密码。重要提示:保持root会话打开,直到您确定可以再次登录!
Tom Zych
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.