请评论这种存储用户密码的方法...
$storePassword = md5Hash($salt, $userActuallyPassword);
当用户分配密码时,我将生成一个盐,它是一个十位随机字符串,我将 md5 与 userActuallyPassword 一起使用,并且我存储盐和 storePassword,在存储用户实际密码中,这是一个好方法吗这样做吗?对此有何评论?
$storePassword = md5Hash($salt, $userActuallyPassword);
When the user assign a password, I will generate a salt, which is a ten digit random string, and I use md5 with the userActuallyPassword, and I store the salt and storePassword, within store the user actually password, is this a good way to do so? Any comment on this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
已经差不多好了。
但是,您不应使用 MD5,而应使用非 ASCII 盐。
改为使用 bcrypt
It's almost good.
However, you should not use MD5, and you should use non-ASCII salt.
Instead, use bcrypt
尝试使用更严格研究的方法,例如 PBKDF2。您仍然会存储哈希值和盐,并且可以选择自己的哈希算法,但您将处理字典攻击、彩虹攻击和各种其他问题。您可以在 hash_hmac() 函数的注释中找到一个很好的实现。
Try using a more rigorously-studied method like PBKDF2. You'll still store a hash and a salt, and you can pick your own hashing algorithm, but you'll take care of dictionary attacks, rainbow attacks and a variety of other problems. You can find a good implementation in the comments for the hash_hmac() function.
几乎正确:
$storePassword = $salt 。 md5Hash($salt, $userActuallyPassword);
并且最好使用 SHA256 或 BCrypt Hash,而不是 md5。
此外,十位随机字符串没有很大的熵,您可以通过使用 128 个随机位而不是数字来改进。
nearly correct:
$storePassword = $salt . md5Hash($salt, $userActuallyPassword);
and instead of md5, you are better off using either SHA256 or BCrypt Hash.
Also, a ten digit random string does not have a very large entropy, you could improve by using 128 random bits instead of digits.