我听说过有人在使用这种方法,想知道这意味着什么。我只是知道这是个坏主意!
据我所知,在将哈希存储到数据库之前对密码进行加盐处理的主要目的是使每个哈希算法都独一无二,因此在尝试破解它时需要为每个用户提供一个新的彩虹表。
如果纯文本只是用自身加盐,那么在这种情况下如何削弱散列?
一个例子:
plainText = input();
saltedText = plainText + plainText;
hashedText = hash(saltedText);
db.store(hashedText);
下面的方法是否具有相同的弱点或任何其他弱点?
plainText = input();
saltedText = hash(plainText) + plainText;
hashedText = hash(saltedText);
db.store(hashedText);
最佳答案
我认为你误解了盐的用途。盐意味着相同的数据,散列两次(通常)会给出两个不同的结果。这可以防止知道哪些值可以创建给定哈希的攻击,让您可以登录到使用相同密码的每个人。
因此,除了散列更多数据的性能命中之外,复制要散列的测试不会给您带来任何好处。
关于database - 在存储在数据库中之前用自己的 secret 加盐,有什么弱点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4032824/