我正在处理需要加密密码的注册表单,我听说建议我对密码使用 Blowfish 加密,如何使用 PHP crypt() 函数实现河豚加密?另外,我打算稍后检索密码以进行登录。
问问题
9016 次
2 回答
7
简短的回答是使用以字符$2a$crypt
开头的盐、两位数的成本参数$和字母表中的 22 位数字./0-9A-Za-z。这仅适用于支持 Blowfish 加密算法的系统。然而,PHP 5.3 原生实现了它。有关更多详细信息,请参阅PHP 手册 — crypt。
例子:
crypt('rasmuslerdorf', '$2a$07$somesillystringforsalt')
盐字符串触发适当的算法。两位数的成本参数是底层基于 Blowfish 的散列算法的迭代计数的以 2 为底的对数,并且必须在 [04 – 31] 范围内。在示例中,07 告诉算法使用 2 7或 128 次迭代。这个数字越高,执行时间越长,但是在散列用户密码的情况下,这是一件好事。
这个对类似问题的回答更详细地解释了 BCrypt 是什么,它与 Blowfish 的关系,以及为什么要使用它。Stack Overflow 上还有许多其他相关主题。
phpass是一个出色的、易于使用的密码散列框架,适用于所有系统,如果支持则使用 Blowfish,如果不支持则回退到其他算法。
于 2012-06-24T04:09:44.923 回答
4
您永远不需要河豚来加密这样的密码。注册表单应通过 HTTPS 进行,这将处理对网络攻击者的防御。密码本身应该被散列(从不加密)。bcrypt 是一个很好的基于河豚的密码哈希函数。但是有很多与 SO 上的安全密码存储相关的帖子。
于 2012-06-24T19:38:50.110 回答