【问题标题】:Php - Is the security level of crypt('password', '$2a$12$' . $salt) equal to password_hash() method [duplicate]Php - crypt('password', '$2a$12$' . $salt) 的安全级别是否等于 password_hash() 方法 [重复]
【发布时间】:2014-07-14 00:21:36
【问题描述】:

这个问题我看起来很书呆子,但我是那些 PHP 密码加密库和方法的新手。

我发现了很多关于使用bcrypt 进行最高级别的安全密码散列的帖子。

我发现在PHP 5.5中,我们可以使用password_hash()函数来创建bcrypt密码。但大多数托管网络服务器仍然不支持 PHP 5.5。这真的很尴尬。

我还发现了另一个常用函数crypt(),它支持六种哈希算法。幸运的是,该函数还可以通过提供适当的格式字符串(例如$2a$12$)来生成bcrypt 哈希密码。官方 php 文档再次表示 PHP 5 支持它。因此我决定在我的项目中使用它。

我只想知道这个crypt()函数(带有$2a$12$)的安全级别等于PHP 5.5的password_hash()函数。

我还发现 password_hash() compatible library 用于较低版本的 PHP。这个库是否比crypt() 函数提供其他优势?

请分享您的任何建议。我现在真的很模棱两可。提前致谢。

【问题讨论】:

  • 您的所有问题都在那里得到解答。标题不一样,但 540 票的答案解决了您的疑问。

标签: php hash passwords bcrypt crypt


【解决方案1】:

$2a$ 哈希不安全,请参阅this 页面了解详细信息。 PHP 5.3.7 及更高版本使用$2y$crypt 可以生成安全哈希,但您需要手动提供盐。如果你生成一个弱盐,那么哈希就不够安全。

因此,我建议使用password_compat。它由 Anthony Ferrara 开发,他在 PHP 5.5 中实现了 password_hash 函数。它提供了一种简单且安全的方法来散列和比较密码。

【讨论】:

  • 感谢您的建议。在我阅读了明显重复的问题后,我决定使用 password_compat。
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 2014-12-16
  • 2018-09-05
  • 2014-06-27
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多