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

标签 php security encryption passwords

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

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

最佳答案

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

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

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

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

  • 如果您的客户想要更改密码,他们将需要通过一些小脚本来完成,该脚本会正确散列新密码并将其存储到数据库中。

  • 如果您的客户想要恢复密码,则应生成一个新的随 secret 码并将其发送给您的客户。新密码的哈希存储在数据库中

  • 如果您的客户想要查询当前密码,他们运气不好。这正是散列密码的意义所在:系统不知道密码,因此永远无法“查找”/窃取密码。

Jeff关于它的博客:You're Probably Storing Passwords Incorrectly

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

(一般来说,直接乱动你数据库里的记录是自找麻烦。
许多人 - 包括非常有经验的数据库管理员 - 已经通过艰难的方式发现了这一点。)

关于php - 使用 PHP 实现双向加密的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647514/

相关文章:

php - 如何在php mysql上设置主备数据库

php - 用于插入和选择的不同表

flash - 构建一个允许用户只能观看一次视频的系统

azure - 基于 Windows Azure 的 Web 应用程序的内容加密

php - PHP Guzzle 支持的最大 "concurrent"请求数是多少?

Php - imap_delete - 删除刚刚选择的电子邮件

security - 大数据集群(Hadoop,Spark等)中的副本是否由同一系统管理员管理?

security - 让两台服务器通过 http 进行通信有什么风险?

c# - RSA 解密在 Windows 2012 和 Windows 10 中失败

javascript - 使用 Forge 加密/解密 AES