📜  实施盐渍

📅  最后修改于: 2022-05-13 01:56:37.513000             🧑  作者: Mango

实施盐渍

散列主要用于身份验证。加盐使密码散列更加安全。加盐是哈希过程中的一项额外操作。如果两个客户端具有相同的密码,它们也将具有相同的密码哈希。盐是一系列随机字符,是散列之前对密码的额外输入。这为两个密码生成了一个备用哈希结果。加盐使得很难使用查找表和彩虹表来破解哈希。查找表是一种每秒处理多个哈希查找的数据结构。

盐渍的实施:
以下建议用于实施加盐:

  • 盐的大小应与散列函数输出的大小相匹配。
  • 始终在 Web 应用程序中的服务器上散列。
  • 对于每个用户的密码,盐应该是唯一的。

加密安全伪随机数生成器 (CSPRNG) 是生产盐的最佳选择。它是完全不可预测的并产生一个随机数。所以它是高度安全的。

要存储密码:

  • 使用 CSPRNG(密码安全伪随机数生成器)生成盐。
  • 在密码的开头添加盐。
  • 使用 SHA-256 对其进行哈希处理。
  • 保存哈希和盐。

要验证密码:

  • 从数据库中恢复盐和哈希。
  • 在密码中添加盐并对其进行哈希处理。
  • 将给定密码的哈希值与存储在数据库中的密码进行比较。
  • 如果哈希值不匹配,则密码不正确。

密钥延伸也可用于防止攻击。它可以防止每秒计算数十亿次哈希的高端硬件效率降低。