我想在PHP中使用双向加密来加密我网站上的密码.我遇到了mcrypt库,但它看起来很麻烦.任何人都知道任何其他方法更容易,但又安全吗?我可以访问Zend Framework,因此使用它的解决方案也可以.
我实际上需要双向加密,因为我的客户端想要进入数据库并更改密码或检索它.
您应该存储密码哈希(并正确加盐).
世界上没有任何借口足以打破这一规则.
目前,使用crypt,使用CRYPT_BLOWFISH是最佳实践.
PHP中的CRYPT_BLOWFISH是Bcrypt哈希的实现.Bcrypt基于Blowfish分组密码.
如果您的客户端尝试登录,则对输入的密码进行哈希处理,并将其与存储在数据库中的哈希值进行比较.如果匹配,则授予访问权限.
如果您的客户想要更改密码,他们需要通过一些小脚本来执行此操作,该脚本可以正确地对新密码进行哈希处理并将其存储到数据库中.
如果您的客户想要恢复密码,则应生成新的随机密码并发送给您的客户.新密码的哈希值存储在DB中
如果您的客户想要查找当前密码,那么他们就不走运了.这正是哈希密码的重点:系统不知道密码,因此它永远不会被"抬头"/被盗.
杰夫在博客上写道:你可能错误地存储了密码
如果您想使用标准库,可以查看:Portable PHP密码哈希框架,并确保使用CRYPT_BLOWFISH算法.
(一般来说,直接搞乱数据库中的记录就是在寻找麻烦.
许多人 - 包括非常有经验的数据库管理员 - 已经找到了困难的方法.)
不要加密密码.你永远不需要解密它们,你只需要验证它们.使用mcrypt并不比什么都不做要好,因为如果黑客闯入你的站点并窃取加密的密码,他们可能也会窃取用于加密它们的密钥.
为您的php应用程序创建一个"密码"函数,在该应用程序中,您获取用户的密码,将其与salt连接并通过sha-256散列函数运行生成的字符串并返回结果.每当您需要验证密码时,您只需要验证密码的哈希值是否与数据库中的哈希值匹配.
http://phpsec.org/articles/2005/password-hashing.html