密码盐:其他最佳实践

Bob*_* Mc 3 cryptography salt

像大多数程序员一样,我不是密码学方面的专家,但我理解基础知识.然而,正如Jeff的博客文章所述,一点点知识可能是一件危险的事情.考虑到这一点,我理解盐值的目的但我需要一些帮助来理解如何使用盐值.

我已经阅读过关于这个主题的其他帖子,最好使用随机盐值来加密每个密码.如果是这种情况,当我尝试对用户进行身份验证时,如何重现该随机盐值?在这种情况下,我会加密用户提供的明文密码,对其进行加密,并将其与存储在数据库中的密码进行比较.在创建密码时,是否将随机盐值与加密密码一起存储在用户记录中?如果黑客拥有完整的用户记录,这会使盐值无用吗?

Amb*_*ber 8

盐的主要目的是在破解密码哈希时防止彩虹表的使用 - 不使用盐,可以简单地使用预先生成的反向查找表来查找哈希并立即知道可能生成它的密码.

使用salt,彩虹表方法被打败了,因为哈希到密码的映射对于特定的盐完全不同 - 因此必须为每个盐值单独生成彩虹表(并且生成彩虹表所花费的时间是在没有彩虹表的帮助的情况下,暴露哈希所需的时间成比例).

由于盐的目的是不允许使用预先生成的彩虹表,无论攻击者是否知道给定用户输入的特定盐,没有真正的理由将其单独存储,只要你是每个条目使用独特的盐.