盐
密码学中,盐是在密码被哈希之前添加的随机数据。这使得攻击者无法从哈希值推导出密码,因为攻击者无法使用预先计算的密码和相应哈希的表来推导密码。
密码不应以明文形式存储,因为攻击者可能会破解存储密码的数据库。通常,密码会被哈希,然后存储哈希的结果。如果哈希函数是密码学安全的,那么即使攻击者可以访问存储的哈希,也无法逆转这个函数。
为了从哈希值推导出密码,攻击者可以在预先计算的表中查找与哈希对应的密码(也称为彩虹表):
密码 | 哈希 |
---|---|
pa55w0rd | 56965E2A... |
abcdef | BEF57EC7... |
letmein | 1C8BFE8F... |
虽然这些表可能非常大,但这种攻击可能会成功,因为表查找是一种快速操作。
在对密码进行哈希之前添加随机盐可以阻止这种攻击成功,因为哈希不是仅基于密码计算的,而是基于密码与盐的组合计算的。
与密码不同,盐不需要保密:它可以与加盐和哈希的密码一起存储在服务器的数据库中。