存储哈希密码字节而不是字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储哈希密码字节而不是字符相关的知识,希望对你有一定的参考价值。

我最近的发展使我进入了密码存储安全,散列函数,...的世界。

我决定在数据库中存储散列函数的结果字节数组(在BINARY类型列中)以及salt,因为存储十六进制字符串会占用更多空间。

这种做法有什么缺点吗?特别是在安全方面。

+----+---------+--------------+--------------+---------------+------------+
| id | login   | password     | salt         | name          | lname      |
+----+---------+--------------+--------------+---------------+------------+
|  1 | myadmin | 0x8B624d85B1 | 0x248f1706f0 | Administrador | do Sistema |
+----+---------+--------------+--------------+---------------+------------+
答案

从安全角度看,将哈希和salt存储为二进制而不是字符串,我看不出任何缺点。最终所有数据都是二进制的。

我会更关心你正在使用的散列算法。我没有看到你存储难度系数的任何地方,所以我假设你没有使用BCrypt?如果没有,您可能需要考虑使用它,因为它似乎是目前密码散列的黄金标准。

以上是关于存储哈希密码字节而不是字符的主要内容,如果未能解决你的问题,请参考以下文章

如何将密码文本与 bcrypt 哈希值进行比较?

从 UTF-8 QString 中提取字节

Java 使用 char[] Array 还是 String 存储字符串密码

哈希的意义何在?

通过将字段存储为字节而不是数十亿文档的字符串,将在 Lucene 索引中优化多少空间和处理

C#中的SHA1哈希值是否会永远返回给定字符串的相同值?