您可能已经阅读了该信息,并且您知道 MD5 不是最安全的散列函数
但是您知道为什么吗?你知道更安全的替代品吗?
这就是我今天要向您解释的内容。
为什么 MD5 不安全?
MD5 是一种密码算法,通常用于将密码存储在数据库中
但这种算法不再安全
暴力攻击比以往任何时候都快,字典表很大 MD5 算法还有其他潜在问题
什么是MD5?
MD5 是一种密码算法,通常用于在数据库中存储密码。
在互联网的早期,网站大多在其数据库中保存明文密码。
这不是一个好的解决方案,因此开发人员使用 MD5 来混淆数据库中的密码。
MD5 是一种算法,可从任何密码、短语或文本生成 32 个字符的十六进制字符串。
例如,如果您的密码是“qwerty”(坏主意),那么在数据库中您将拥有 d8578edf8458ce06fbc5bb76a58c5ca4。
这样一来,IT 人员就看不到您的密码,而且如果有人窃取了数据库,他们也无法直接获得所有密码。
今天,解密密码仍然不是立即的,但到目前为止还没有。
我将在接下来的部分解释原因,以及为什么您必须找到另一种存储密码的方法。
为什么 MD5 不安全?
1 – 对 MD5 哈希的蛮力攻击速度很快
蛮力攻击是一种通过尝试多种可能性来找到密码的方法。
要么通过猜测用户可能使用过的内容(生日、孩子的名字、宠物名称等),要么尝试所有内容(从 a、b、c 到带有特殊字符的 10 个字符的密码)。
MD5 算法使用起来很快。
所以在几秒钟内您可以尝试多种组合。
20 年前,为世界上最强大的计算机找到密码可能需要数年时间
今天,每个人家里都有一台超级计算机,随着处理器和图形处理器的改进,我们最多可以在几天内解密“安全”密码.
最好的计算机每秒可以尝试数十亿个密码(来源:ZDNet)。
对蛮力攻击的唯一抵抗可能是密码长度。
如果您有一个 40 个字符长的随机密码,并带有特殊字符,那么您目前可能是安全的,
但是还能持续多久呢?
2 – MD5 字典表很大
在 MD5Online 我们喜欢字典表。
通过在我们的数据库中存储超过 11,500 亿个密码,我们可以在几秒钟内为您提供任何哈希的答案。
这是 MD5 算法的第二个问题。
它被如此广泛地使用,以至于多年来已经创建了像这样的大型数据库。
如果您的密码在里面(如果您有一个“短”密码,则很有可能),您的帐户根本就不安全。
至于蛮力方法,唯一安全的方法是使用带有特殊字符的长随机密码。
在这种数据库中拥有它的可能性太多了。
像这样的数据库占用了大量磁盘空间。即使这些年来价格越来越便宜,它仍然是一个障碍。
3 – MD5 有冲突
MD5 算法也已证明其加密方法存在问题。
冲突是指两个单词生成相同的哈希值。
安全算法具有良好的抗碰撞性。
也就是说,对于不同的单词,您获得相同散列的机会很小。
但MD5的抗碰撞性较低。
因此,如果您知道“abc”和“def”具有相同的生成散列(只是一个示例)。
您可以说“123abc”和“123def”也生成了相同的哈希值。
这对于加密哈希函数来说是一个糟糕的属性,因为您可以猜测出很多派生词。
有哪些解决方案?
既然您知道为什么 MD5 不安全,那么您可以做些什么来提高数据库的安全性。
使用盐
您可以尝试的第一件事是在加密密码时使用盐。
我已经写过一篇关于此的文章:什么是 MD5 盐以及如何使用它?
如果您想了解更多信息,请检查它。
基本上,盐是您将在每个密码之前和/或之后添加的词。
如果您的 salt 是“randomsaltformypassword”并且用户选择“qwerty”作为密码,您将使用“randomsaltformypasswordqwerty”作为 MD5 函数参数。
这样你就在你的数据库中加密了一个更长的密码,黑客将更难找到相应的密码。
确保选择长盐以提高安全性。