修改MD5输出是否更安全?

Is it more safe to modify MD5 output?

作为一种普通的方法,我一直使用将密码的MD5保存在数据库中,而有很多网站将MD5哈希数据解码为原始数据(使用rainbow数据库)。

我想知道修改MD5函数的输出是否更安全(例如省略MD5输出的最后一个字符以创建新的哈希数据)?还是 MD5 背后的逻辑使得它比每个修改后的版本都更安全?

也许您应该考虑使用不同的哈希算法?

https://security.stackexchange.com/questions/4789/most-secure-password-hash-algorithms

不,这对提高密码的安全性没有太大帮助。它增加了一点"security by obscurity",但是当我们散列密码时,我们为攻击者知道散列和算法的情况做准备。

一般来说,MD5 和推导的问题是,它们的计算速度太快了。使用普通硬件,您可以计算 8Giga MD5/s,这使得暴力破解变得太容易了。今天的密码破解工具不仅提供普通的 MD5 散列,您还可以计算推导,例如md5(strtoupper(md5($pass))) 开箱即用。

为了安全地存储密码,您需要像 BCrypt、PBKDF2 或 SCrypt 这样的具有成本因素的慢散列函数。当然,每个密码都应该用唯一的盐腌制。