Security 存储散列密码字节而不是字符

Security 存储散列密码字节而不是字符,security,hash,binary,passwords,password-hash,Security,Hash,Binary,Passwords,Password Hash,我最近的发展使我进入了密码存储安全、哈希函数 我决定将哈希函数的结果字节数组(在二进制类型列中)以及salt存储在数据库中,因为存储十六进制字符串可能会占用更多空间 这种做法有什么坏处吗?特别是在安全方面 +----+---------+--------------+--------------+---------------+------------+ | id | login | password | salt | name | lname

我最近的发展使我进入了密码存储安全、哈希函数

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

这种做法有什么坏处吗?特别是在安全方面

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

从安全角度来看,将散列和salt存储为二进制而不是字符串,我看不出有任何不利之处。总之,所有数据都是二进制的


我更关心的是您使用的哈希算法。我看不到您存储困难因素的任何地方,所以我假设您没有使用BCrypt?如果不是,您可能会考虑使用它,因为它现在是密码散列的黄金标准。

< P>我不能看到从安全的角度来看,将哈希和盐存储为二进制而不是字符串的任何缺点。总之,所有数据都是二进制的


我更关心的是您使用的哈希算法。我看不到您存储困难因素的任何地方,所以我假设您没有使用BCrypt?如果不是,您可能需要考虑使用它,因为它现在是密码散列的黄金标准。

ARGON2,该表只是说明性的。我已经读到Argon2太新了,因此不太安全,但我正在尝试使用Argon2(哪种变体?2d?2id?)。这是最近的,但作为密码哈希竞争的一部分,它也得到了相当严格的审查。2d,我在一台服务器上运行了一整套应用程序,所以“应该”几乎不可能侧面攻击我的对手server@LucasNoetzold-将来升级到新算法可能会变得更加困难。字符串格式通常包括所有必要的信息,如salt、成本因素和算法签名,您还必须存储这些信息。内置函数大多是向后的mpatible,这意味着即使使用较旧的算法计算,他们也可以验证密码。Argon2,该表只是说明性的。我读到Argon2太新,因此不太安全,但我尝试使用Argon2。+1(哪种变体?2d?2id?。这是最近的,但作为密码哈希竞赛的一部分,它也得到了大量的审查。2d,我在一台服务器上运行了一整套应用程序,所以“应该”几乎不可能侧面攻击我的对手server@LucasNoetzold-将来升级到新算法可能会变得更加困难。字符串格式通常包括所有必要的信息,如salt、成本因素和算法签名,您还必须存储这些信息。内置函数大多是向后的mpatible,这意味着即使使用较旧的算法计算密码,他们也可以验证密码。