首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP实现双向加密的最佳方式是什么?

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

Stack Overflow用户
提问于 2009-03-15 09:08:08
回答 4查看 7.5K关注 0票数 7

我想加密我的网站上的密码使用PHP内的双向加密。我曾经接触过mcrypt库,但它看起来太麻烦了。有没有人知道其他更简单但又安全的方法?我确实可以访问Zend框架,所以使用它的解决方案也可以。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-15 11:22:51

您应该存储散列密码(和)。

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

目前,结合使用crypt和CRYPT_BLOWFISH是最佳实践。

PHP中的CRYPT_BLOWFISH是Bcrypt hash的一个实现。Bcrypt基于Blowfish块密码。

  • 如果您的客户端尝试登录,您将对输入的密码进行哈希处理,并将其与数据库中存储的哈希进行比较。如果匹配,则授予访问权限。
  • 如果您的客户端想要更改密码,他们将需要通过一些小脚本进行更改,该脚本将正确地将新密码散列并将其存储到数据库中。
  • 如果您的客户端想要恢复密码,则应生成一个新的随机密码并将其发送给您的客户端。新密码的散列存储在DB
  • 中。如果您的客户端想要查找当前密码,那就不走运了。这正是散列密码的意义所在:系统不知道密码,因此它永远不会被“查找”/被窃取。

Jeff在博客上写道:You're Probably Storing Passwords Incorrectly

如果您想使用标准库,可以查看:Portable PHP password hashing framework并确保使用CRYPT_BLOWFISH算法。

(一般来说,直接处理数据库中的记录是自找麻烦。

许多人-including非常有经验的数据库管理员-已经发现了艰难的方式。)

票数 27
EN

Stack Overflow用户

发布于 2009-03-15 09:12:13

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

为您的php应用程序创建一个单独的" password“函数,您可以在其中获取用户的密码,将其与一个salt连接起来,并通过sha 256散列函数运行结果字符串,然后返回结果。每当需要验证密码时,只需验证密码的散列是否与数据库中的散列匹配。

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

票数 8
EN

Stack Overflow用户

发布于 2009-03-15 09:37:16

当您以后确实需要检索密码时,至少应该使用私钥和公钥,这样攻击者就会需要私钥(不应该存储在同一台机器上)来解密密码。

实现此目标的两个函数是openssl_public_encrypt()openssl_private_decrypt()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/647514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档