我已经对安全性和密码哈希进行了大量研究,但似乎有很多意见。如何节省盐分。我希望在这一领域具有专业知识的人可以对此事发表专业意见。我应该将盐储存在数据库中吗?在单独的文件中?它们应该与密码位于同一数据库中吗?
谢谢您的帮助。
最佳答案
@ManyelReyes有正确的答案,这就是原因:
盐可以防止彩虹桌子。彩虹表是常见密码哈希值的预先计算列表。
因此,如果您只是为某人保存密码哈希,而他们使用的是通用密码,则攻击者可以在彩虹表中找到它并知道密码。
通过为每个密码随机添加一些内容,您将使彩虹表无法正常工作。之所以起作用,是因为可以对其进行预先计算。将盐添加到用户密码后,由于盐是随机的,因此无法预先计算彩虹表。如果为每个用户使用相同的盐,他们可以使用该盐制作彩虹表。
由于它不会改变盐所提供的安全性,因此攻击者可以知道您正在使用它们以及盐的含义,因此可以将盐以明码形式存储在用户表中。 (我也将它们附加到哈希结果中,所以我不需要额外的列,只要哈希始终是相同长度即可。)
关于javascript - 我该如何真正节省盐分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53471249/