php - bcrypt功能说明

标签 php hash cryptography salt bcrypt

我正在研究在 PHP 中使用 bcrypt 的哈希和加盐密码。 有人可以向我解释为什么 brcypt 使用“work”/“rounds”来防止攻击吗?

我已经读过“How do you use bcrypt for hashing passwords in PHP? ”,但我很难理解如果有人掌握了您的数据库并可以离线破解它,它有何特别之处?

是否有可能通过盐和哈希一起来保护数据库免受彩虹表的影响?或者 bcrypt 是否做了一些特殊的事情来帮助防止这样的攻击?

最佳答案

简单地说,bcryptsha 系列等其他一些哈希算法“更好”,因为它故意变慢,并且可以通过使用高迭代次数来故意变慢。此外,它需要使用盐来防止使用预先计算的哈希值(彩虹表)。 salt 值应与 bcrypt 的每个输出一起生成/存储,以禁止不同用户的值之间进行比较(如果他们使用相同的密码)。

即使攻击者获取了您的密码哈希值和盐,只要您使用 bcrypt 进行大量迭代,就不可能快速找到匹配的密码。这是一种单向函数,因此您需要为尝试的每个密码执行一次 bcrypt 计算。这当然不能有效防止错误密码。

关于php - bcrypt功能说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129333/

相关文章:

php - 从命令行读取输入

c# - 创建唯一的 URL 安全哈希

perl - 哈希的自定义排序方法,它将自动使用适当的哈希

.net - 安装 x509 证书时使用哪个商店

php - PHP 中关于 time() 函数的困惑

PHP - 执行 awk 或 fread 更快地读取非常大文件上的列

hash - 当 SHA-512 更安全时,为什么要使用 SHA1 来散列 secret ?

当一个返回结果时,Python 停止多个进程?

python - 密码学代码困惑

php - PHP PDO 语句可以接受表名或列名作为参数吗?