php - 在 php 中散列(用盐)用户名和密码

标签 php security hash salt saltedhash

我正在创建一个用户登录功能,但我看到了关于执行此操作的最佳方法的不同意见。

这是我想做的...

  • 使用基于子字符串的 2 个哈希盐对用户名进行哈希处理 用户名。
  • 使用 2 个随机生成的哈希盐对密码进行哈希处理,这些盐保存在 包含密码和用户名的表格。

这是矫枉过正、错误甚至不够安全吗?

最佳答案

加盐可以防止彩虹表,所以有 2 个盐不会比 1 个好。黑客需要知道盐才能用彩虹表破解你的密码,他们唯一能做到的方法是如果他们有权访问数据库表。如果他们有,他们无论如何都有两种盐。

密码越长,暴力破解就越难,因此密码越长越好。

每次从数据库中读取用户名时,对用户名进行加盐和散列处理都会增加不必要的开销。使用密码,您只需在登录时加盐和散列。

理想情况下使用像 BCrypt 这样的东西其中加密哈希函数可以随时间自适应地减慢为 moore's law继续。这将减少暴力攻击的可能性。

关于php - 在 php 中散列(用盐)用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347261/

相关文章:

python - 安全地从 python 中的字符串中删除所有 html 代码

security - OpenSSL 库可以针对电压攻击进行修复吗?SSL 库也是吗?

php - JS 中的哈希 == PHP 中的哈希

php - Symfony 4 和 Amazon S3 - AWS 凭证不起作用

php - 找不到空行

php - 将特殊字符(例如汉字)从PHP传输到android

javascript - Vue.JS 从 JSON 对象打印空值

security - 如何防止暴力攻击?

java - OpenJDK的rehashing机制

java - 将键值对添加到 hashMap 时,为什么 Java 会更改 hashMaps 的 hashCode?