根据维基百科:
彩虹表对含有大量盐的单向散列是无效的。例如,考虑一个使用以下函数生成的密码哈希(其中“颇具”是级联操作符):
saltedhash(password) = hash(password || salt)Orsaltedhash(password) = hash(hash(password) || salt)
假设我使用Argon2(di)来存储密码。我应该使用第二种方法还是第一种方法来散列密码?
作为一个更普遍的问题,在密码存储情况下,哪种哈希方法通常更好?(其他情况如何,如HMACS?)
发布于 2019-10-12 01:20:29
假设我使用Argon2(di)来存储密码。我应该使用第二种方法还是第一种方法来散列密码?
不是的。Argon2将salt作为独立于密码的参数,并在内部负责如何将两者合并到计算中。任何专门的密码哈希函数都应该。
但是,理想情况下,您应该使用更高级别的API,它在内部负责盐分的生成和管理,方法是将密码哈希的使用封装为:
password_hash()在PHP中。password_verify()在PHP中。基本上,如果你用手连接盐和密码,就像你从维基百科中引用的那样,你做错了。
https://security.stackexchange.com/questions/219487
复制相似问题