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