密码学中,是在密码被哈希之前添加的随机数据。这使得攻击者无法从哈希值推导出密码,因为攻击者无法使用预先计算的密码和相应哈希的表来推导密码。

密码不应以明文形式存储,因为攻击者可能会破解存储密码的数据库。通常,密码会被哈希,然后存储哈希的结果。如果哈希函数是密码学安全的,那么即使攻击者可以访问存储的哈希,也无法逆转这个函数。

为了从哈希值推导出密码,攻击者可以在预先计算的表中查找与哈希对应的密码(也称为彩虹表):

密码 哈希
pa55w0rd 56965E2A...
abcdef BEF57EC7...
letmein 1C8BFE8F...

虽然这些表可能非常大,但这种攻击可能会成功,因为表查找是一种快速操作。

在对密码进行哈希之前添加随机盐可以阻止这种攻击成功,因为哈希不是仅基于密码计算的,而是基于密码与盐的组合计算的。

与密码不同,盐不需要保密:它可以与加盐和哈希的密码一起存储在服务器的数据库中。