当前位置:  开发笔记 > 编程语言 > 正文

使用PHP实现双向加密的最佳方法是什么?

如何解决《使用PHP实现双向加密的最佳方法是什么?》经验,为你挑选了2个好方法。

我想在PHP中使用双向加密来加密我网站上的密码.我遇到了mcrypt库,但它看起来很麻烦.任何人都知道任何其他方法更容易,但又安全吗?我可以访问Zend Framework,因此使用它的解决方案也可以.

我实际上需要双向加密,因为我的客户端想要进入数据库并更改密码或检索它.



1> Jacco..:

您应该存储密码哈希(并正确加盐).

世界上没有任何借口足以打破这一规则.

目前,使用crypt,使用CRYPT_BLOWFISH是最佳实践.
PHP中的CRYPT_BLOWFISH是Bcrypt哈希的实现.Bcrypt基于Blowfish分组密码.

如果您的客户端尝试登录,则对输入的密码进行哈希处理,并将其与存储在数据库中的哈希值进行比较.如果匹配,则授予访问权限.

如果您的客户想要更改密码,他们需要通过一些小脚本来执行此操作,该脚本可以正确地对新密码进行哈希处理并将其存储到数据库中.

如果您的客户想要恢复密码,则应生成新的随机密码并发送给您的客户.新密码的哈希值存储在DB中

如果您的客户想要查找当前密码,那么他们就不走运了.这正是哈希密码的重点:系统不知道密码,因此它永远不会被"抬头"/被盗.

杰夫在博客上写道:你可能错误地存储了密码

如果您想使用标准库,可以查看:Portable PHP密码哈希框架,并确保使用CRYPT_BLOWFISH算法.

(一般来说,直接搞乱数据库中的记录就是在寻找麻烦.
许多人 - 包括非常有经验的数据库管理员 - 已经找到了困难的方法.)



2> Jesse Weiger..:

不要加密密码.你永远不需要解密它们,你只需要验证它们.使用mcrypt并不比什么都不做要好,因为如果黑客闯入你的站点并窃取加密的密码,他们可能也会窃取用于加密它们的密钥.

为您的php应用程序创建一个"密码"函数,在该应用程序中,您获取用户的密码,将其与salt连接并通过sha-256散列函数运行生成的字符串并返回结果.每当您需要验证密码时,您只需要验证密码的哈希值是否与数据库中的哈希值匹配.

http://phpsec.org/articles/2005/password-hashing.html


好吧,您也可以使用密钥"PleaseHackMe"对密码进行异或.但是说真的,说服你的客户他们只需要重置密码 - 而不是检索密码.
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有