database - 在存储在数据库中之前用自己的 secret 加盐,有什么弱点?

标签 database security hash salt rainbowtable

我听说过有人在使用这种方法,想知道这意味着什么。我只是知道这是个坏主意!

据我所知,在将哈希存储到数据库之前对密码进行加盐处理的主要目的是使每个哈希算法都独一无二,因此在尝试破解它时需要为每个用户提供一个新的彩虹表。

如果纯文本只是用自身加盐,那么在这种情况下如何削弱散列?

一个例子:

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/

相关文章:

c# - 数据成员密码未经过哈希处理?

swift - 你如何获得 couchbase 数据库的大小

c# - 我可以重用内置 IIS 身份验证但提供我自己的凭据检查吗?

java - 使用 hashCode 和 Arrays.equals 时潜在的哈希问题

mysql - Redis 排序 : How do I sort a redis hash key by given value?

sql - 您会为用户名和密码使用一个或两个表吗?

java - 我如何使用 hibernate 设置表和行的编码

database - 这些嵌入式/快速数据库的 4GB 限制是否足够好?如果达到限制,下一步是什么?

php - MySql 中的快速随机行

java - 无法从 Tomcat 网络服务器打开生成的 .mht 文件