MD5哈希加密和解密

4
我对MD5有些困惑。我知道我们不能轻易地解密MD5,除非使用极其困难的暴力破解方法。现在,我访问了一个网站来解密一个MD5哈希值。这是网站链接:MD5Online。出于好奇心,我解密了该加密密码,并成功得到了解密后的密码。然后,我尝试了4-5个之前存储在我的数据库中的密码,这个网站也成功解密了它们。
接下来,我尝试了下面的代码。
<?php
        $password = 'cool@123@!';
        $secure_md5password = md5($password);
        echo $secure_md5password;
?>

我得到了这个MD5哈希值:6234c13c3e1b965dbdd32d604151bd1b。

我在这个网站上尝试使用该哈希值进行解密,结果得到了'cool@123@!'。我还尝试了其他更难的密码。

因此,我对MD5算法感到困惑。那个网站是在使用暴力破解吗?我们能否使用PHP中该网站使用的任何代码呢? 我访问了以下链接以获取答案,但没有找到答案。 1).encrypt-and-decrypt-md5 2).is-md5-decryption-possible 3).how-to-decrypt-an-md5-string-in-php


2
MD5是一种单向加密。你无法解密它。但是仍然可以使用代码匹配技术恢复一些字典单词。 - Thamilhan
我尝试了一些复杂的词,例如cool@123@!它也可以正常工作,我尝试了15-20次。 - Bhavin
2
MD5相对容易被攻破。这就是为什么它不应该被用作安全模型的原因。 - VikingBlooded
1
MD5算法对于相同的输入字符串总是生成完全相同的哈希值。因此,如果您给它一个众所周知的未加盐密码,它将生成一个众所周知的哈希值。 21232f297a57a5a743894a0e4a801fc3被公认为是“admin”的哈希值。这就是为什么安全的密码如此必要的原因。 - Xyz
1
MD5是一种散列算法,与加密无关。 - Shira
4个回答

8

MD5已被证明是一种弱算法。由于您的所有“密码”都是基本的,网站已经使用很久以前就破解了的哈希算法存储了每个密码。

您无法解密哈希值,但可以暴力破解并找出它是什么。

在此处阅读更多信息:https://en.wikipedia.org/wiki/MD5

在此处:https://security.stackexchange.com/questions/19906/is-md5-considered-insecure

编辑:看到您更新了问题。

假设您拥有一个复杂的密码'ajfn3inf',并对其进行哈希处理。由于其相对较短的长度和GPU的计算能力,运行md5破解程序可以轻松地破解它。阅读上述链接以了解有关MD5的更多信息。


好的,太棒了,我在这里找到了答案。非常感谢您的快速回复。 - Bhavin

6
那个网站可能正在使用彩虹表。
关于这个主题的信息: https://zh.wikipedia.org/wiki/彩虹表 简单地说:如果他们曾经尝试破解哈希,则会在表格中保存哈希和密码。 当有人输入一个哈希值时,他们会搜索表并检索出未加密的值。

好的兄弟,我得到了我的答案..感谢您的贡献。 - Bhavin

2

是的,这是通过暴力破解完成的。 我确信如果您的密码超过12个字符,则此网站是未破解的。.md5已经过时不再使用。 取而代之的是使用系统加密password_hash http://php.net/manual/ru/function.password-hash.php


是的,兄弟,你说得对。我尝试过使用特殊字符和数字,但我没有尝试过长度更长的密码。那个网站在密码长度超过13个字符时无法返回答案。 - Bhavin

1

你可以在MD5中使用盐(salt)。并且使用强密码策略进行密码强度验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接