我需要在用户第一次注册到系统时将散列密码存储在数据库中。标准方法是采用
Password
和salt
,附加它们并使用其输出保存在数据库中的哈希算法。我将使用
Cryptographically Secure Pseudo-Random Number Generator
(CSPRNG)来生成salt
。正如我从源Link中读到的那样,使用CSPRNG
生成的盐非常安全,可以生成salts
。由于salt
非常难以预测,因此使用MD5
进行哈希最终String(Password || salt)
是一个很好的决定还是有更好的选择?
注意:
我正在考虑选择哈希算法的参数:
1)安全性应该相当好 2)散列算法应该足够快,不会妨碍用户体验。
答案 0 :(得分:5)
这已经在互联网上一次又一次地被覆盖,但是我们再来一次......
使用bcrypt,argon2或PBKDF2。使用CSPRNG生成盐。使用哈希存储盐是很好的。如果没有有意的迭代次数,请不要使用MD5,SHA256或其他任何内容。