MD5:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
今天不是要你们来看这些百科中的词条的,今天要说的是md5的解密原理,了解了原理,你以后在做解密工作的时候或者自己用python写一个破解md5的脚本的时候才可以做的更好。
MD5是不可逆算法,目前看来只能通过暴力破解的方式才可以进行解密。在写软件的时候也会用到MD5,实现一些数据的加密,如果你的应用需要可逆的加密方法,请考虑使用 DES,3DES,AES,RSA 等加密算法。
众所周知,MD5是不可逆的,也就是加密后不能再根据加密的秘钥去解密,那么那些解密网站是怎么进行解密的呢?
因为MD5是不可逆的,所以我们不能直接解密出MD5对应的值。但是不同的字符串生成的md5值都是唯一的,我们在校验软件的完整度的时候,通常都是用md5进行比对来测试 也是这个原理。我们不能直接进行解密,因为没有什么解密字典与md5码对应,我们只能从反面来做,自己加密一个字符串,生成一个md5值,然后再与加密的md5进行比对,也就是用已知的MD5值不断与未知的MD5值进行碰撞,如果两者对比后相同,就认定该MD5的值就是该明文了,也就是解密出来了。在众多的MD5中,总会有一些MD5值是符合的。这其实算是一种逆向思维了。但是应用md5加密容易,来进行对比就很难了,因为有些密码我们可能还没有加密比对过,这也是为什么有些md5还解密不出来的原因。
密码之所以用MD5加密,就是为了不可解密。
正常有良心的设计,不能让用户的密码可以解开,因为人的懒惰是天生的,所以大部份的人只会用两三个常用密码。所以外国的密码设计是这样的,你输入一个密码(明文),用MD5加密后保存在数据库中。下次要验证密码也好办,把用户的输入用MD5加密后,与数据库中加密过的数据对比,相同的话,就表示密码正确。
这样的设计还有另外一个好处,就是可以一定程度上防止SQL注入。网上的暴力破解其实也是利用这个原理,他把许多已知明文的,用MD5加密后,保存起来。你要反查,他实际上是在数据库中查找加密过的,是否有与你查询的MD5串相同,如果相同的话,就把明文给你看。这样的设计表达的是一个互相尊重的理念,系统管理员/开发员是无权知道用户的密码的。如果用户忘记密码,管理员只能用重置密码的方式。所以现在很多软件在你忘记密码的时候,你只能选择进行身份验证后重置密码。
在安全领域中,加密数据随处可见。而在这些数据中,重要的数据往往采用哈希算法进行加密。例如,Linux密码使用sha512,Windows密码采用LM、NTLM,而网站密码采用MD5。这些常见哈希算法有几十种。虽然每种密文都有一定规律,但是单纯靠记忆和经验来的判断就比较困难了。而且如果你连加密的方式都不知道的话,你又如何进行快速解密呢?
kali linux提供工具hash-identifier来实现这个功能。大家只要运行该命令,然后输入哈希密文,就可以得到密文所使用的哈希算法类型。有了这个算法类型,再选择对应的工具或者彩虹表,获取密码明文就容易多了。
打开终端,直接输入1
root@kali:~# hash-identifier
就可以打开hash-identifier了。
然后我们输入你需要解密的密码
它就会列出可能的加密方法,这样更便于你进行解密。
如果你要进行解密MD5,你可以点击此链接到本站提供的在线工具进行解密,解密网站很多,总有一款适合你的。
本文作者:冰羽
本文地址: https://bingyublog.com/2018/03/23/详解MD5解密原理/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!