实施盐渍
散列主要用于身份验证。加盐使密码散列更加安全。加盐是哈希过程中的一项额外操作。如果两个客户端具有相同的密码,它们也将具有相同的密码哈希。盐是一系列随机字符,是散列之前对密码的额外输入。这为两个密码生成了一个备用哈希结果。加盐使得很难使用查找表和彩虹表来破解哈希。查找表是一种每秒处理多个哈希查找的数据结构。
盐渍的实施:
以下建议用于实施加盐:
- 盐的大小应与散列函数输出的大小相匹配。
- 始终在 Web 应用程序中的服务器上散列。
- 对于每个用户的密码,盐应该是唯一的。
加密安全伪随机数生成器 (CSPRNG) 是生产盐的最佳选择。它是完全不可预测的并产生一个随机数。所以它是高度安全的。
要存储密码:
- 使用 CSPRNG(密码安全伪随机数生成器)生成盐。
- 在密码的开头添加盐。
- 使用 SHA-256 对其进行哈希处理。
- 保存哈希和盐。
要验证密码:
- 从数据库中恢复盐和哈希。
- 在密码中添加盐并对其进行哈希处理。
- 将给定密码的哈希值与存储在数据库中的密码进行比较。
- 如果哈希值不匹配,则密码不正确。
密钥延伸也可用于防止攻击。它可以防止每秒计算数十亿次哈希的高端硬件效率降低。