使用Blowfish进行PHP加密

时间:2012-06-24 03:41:18

标签: php security blowfish

我正在处理一个需要加密密码的注册表,我听说建议我使用Blowfish加密密码,如何使用PHP crypt()函数实现blowfish加密?另外,我打算稍后检索密码以便登录。

2 个答案:

答案 0 :(得分:6)

简短回答是使用crypt一个以字符号 $ 2a $ 开头的盐,一个两位数的费用参数, $ ,和字母 ./ 0-9A-Za-z 中的22位数字。这仅适用于支持Blowfish加密算法的系统。但是,PHP 5.3本机实现它。有关详细信息,请参阅PHP manual — crypt

示例:

crypt('rasmuslerdorf', '$2a$07$somesillystringforsalt')

salt字符串会触发相应的算法。两位数 cost 参数是基于Blowfish的哈希算法的迭代计数的基数2对数,并且必须在[04-31]的范围内。在示例07中,告诉算法使用2 7 或128次迭代。此数字越大,执行BUT所需的时间越长,在散列用户密码的情况下,这是 GOOD 的事情。

This answer to a similar question更详细地解释了什么是BCrypt,它与Blowfish的关系,以及为什么要使用它。还有很多其他related topics here on Stack Overflow


phpass是一个优秀的,易于使用的密码哈希框架,可以在所有系统上运行,如果支持则使用Blowfish,如果不支持,则使用其他算法。

答案 1 :(得分:4)

你永远不需要使用blowfish来加密像这样的密码。注册表应该通过HTTPS,它将处理对线路上攻击者的防御。应对自己的密码进行哈希处理(从不加密)。 bcrypt是一个基于河豚的好密码哈希函数。但是在SO上有很多与安全密码存储相关的帖子。