Adler32 容易解密吗?为什么?

Is Adler32 easy to decrypt and why?

我听说我们不应该依赖 Adler32,我想问一下为什么。

为什么我们不应该信任 Adler32 来哈希?它是可逆的吗?或者我们可以轻松地看到真实的文字吗?

绝对不能使用 Adler32 进行密码哈希处理。

对于短输入,可以从 8 位 CRC 获得大量信息。通常对于加密散列,输入数据中的一位更改将改变 50% 的输出位。

它不是为了避免冲突而设计的,它是一个 CRC。许多散列函数是为冲突不是问题的其他目的而设计的,例如字典查找或 "bottle club" 处的储物箱,它仅使用会员编号的最后几位数字来实现瓶子在存储中的均匀分布垃圾箱。

密码安全:

仅使用散列函数是不够的,仅添加盐对提高安全性也无济于事。相反,使用随机盐迭代 HMAC 大约 100 毫秒,并将盐与哈希一起保存。使用 PBKDF2、password_hash、Bcrypt 和类似函数等函数。重点是让攻击者花费大量时间通过暴力破解找到密码。

加盐的 SHA-512 不够用的一个原因是笔记本电脑(我的)每秒可以执行 750,000,这将应用于按使用频率排序的 10,000,000 个密码列表然后有特殊程序模糊那些。除非是鱼叉式钓鱼,否则攻击者可能会对破解的 90% 的密码感到满意。因此,通过将计算机时间从 <2us 延长到 >100ms,攻击者需要 50,000 倍的时间,他可能会移动到下一个站点。

保护您的用户很重要,请使用安全的密码方法。

原因如下:攻击者访问了您的站点,获取了 MD5 密码,使用带有常用密码列表的暴力破解并获得了用户的用户名和密码。现在攻击者在另一个站点上使用它来访问更敏感的数据,因为大多数用户会重复使用密码。你刚刚帮助妥协了用户。注意:一个不错的黑客率可能是 1 billion/second。攻击者会爱上您的网站,而您甚至不知道它已被成功攻击。

没有 "decrypt" 散列,散列也没有隐藏 "real text" -- 加密,而不是散列,做到了这一点。但如果你的意思是 Adler-32 可以用作加密哈希吗?那绝对不行。对加密散列的要求是,对于可预见的硬件和数学来说,用给定的散列来构造消息是极其困难的,实际上是不可能的。对于 Adler-32 来说很容易做到这一点,事实上使用 any 32 位散列也很容易。 32 位根本不够。