我听说我们不应该依赖Adler32,我想问一下为什么。
为什么我们不应该相信Adler32的哈希?可逆吗?或者我们可以轻松地看到真实的文本吗?
人们不会"解密"哈希,哈希也不会隐藏"真实文本"——加密而不是哈希可以做到这一点。但如果你的意思是,Adler-32可以用作加密散列吗?,那绝对不行。加密散列的要求是,对于可预见的硬件和数学来说,用给定的散列构造消息是极其困难的,实际上是不可能的。对于Adler-32来说很容易做到这一点,实际上对于任何 32位哈希都很容易。32位是不够的。
绝对不能使用Adler32进行密码散列。
对于短输入,可以从8位CRC中获得大量信息。对于一个加密散列来说,输入数据每改变一个比特,50%的输出比特就会改变。
它不是为了避免冲突而设计的,它是CRC。许多哈希函数是为其他不存在冲突的目的而设计的,比如字典查找或"瓶子俱乐部"的存储箱,它只使用会员号的最后两位数字来实现瓶子在存储箱中的均匀分布。
密码安全:
仅仅使用哈希函数是不够的,仅仅添加盐对提高安全性几乎没有帮助。相反,使用随机盐迭代HMAC,持续时间约为100ms,并将盐保存为哈希值。使用函数,如PBKDF2, password_hash, Bcrypt和类似的函数。关键是要让攻击者花费大量时间通过暴力破解找到密码。
带盐的SHA-512不充分的一个原因是笔记本电脑(我的)每秒可以执行750,000个,这将适用于按使用频率排序的10,000,000个密码列表,然后有特殊的程序模糊这些密码。除非是鱼叉捕鱼,否则攻击者可能会对90%的密码被破解感到满意。因此,通过将计算机时间从2毫秒延长到>100毫秒,攻击者需要花费5万倍的时间,他可能会转移到下一个站点。
保护您的用户很重要,请使用安全的密码方法。
原因如下:攻击者攻击您的站点,获取MD5密码,使用暴力破解常见密码列表,并拥有用户的用户名和密码。现在,攻击者在另一个网站上使用这个方法来访问更敏感的数据,因为大多数用户都会重复使用密码。你只是在损害用户的利益。注意:一个像样的黑客率可能是10亿/秒。攻击者会喜欢你的网站,你甚至不会知道它被成功攻击了。