MD5是不可逆的加密方案,但有人跟我杠,说他就可以对MD5进行“解密”,我问他用的是什么方案,他也说不出来,只跟我说网上MD5解密的接口有一大堆!说到这里,我乐了!

打开网易新闻 查看更多图片

其实,网上的一些所谓的MD5解密,采取的不过就是“彩虹表”的方式,所谓彩虹表其实就是根据MD5加密后的结果特性,来做键值匹配的一种方式。

我们举个例子,就像我们常用的密码“admin”,在使用MD5进行加密后,会生成一串唯一的密文,其中加密后16位大写的密文为“7A57A5A743894A0E”,这串密文原则上是不变的,也就是说,在任何场景下,您只要使用MD5对“admin”加密,得到的结果都是这么一串固定的密文。

只要有人能够将密文背下来,在不借助任何工具的情况下,也能知道这段密文加密前就是“admin”,至少目前我就知道!

对于比较复杂的字符,这时候,只要将这些字符的动态组合全部进行加密,然后生成一个由密文和明文组成的键值对表,需要“解密”的时候拿密文去匹配这个键值对表,碰上了,就可以得到相应的明文了!

这就是所谓的“解密”过程,一点也不难理解。

而所谓的“解密”,并不是对密文本身进行逆向的结果,而是直接拿密文去匹配键值对表来“尝试”获取的结果。

原则上“彩虹表”可以将世界上所有的字符组合全部生成键值对密文和明文表,但是,这需要巨大的算力支持,因此,“彩虹表”实际上也是无法保证100%能够“解密”MD5生成的密文的!

说明白了“彩虹表”的原理,那么如何保证MD5加密的密文不被破解呢?其实很简单,就是尽量让加密的内容足够复杂,不要使用单数字、字母、字符来做加密内容,尽量将加密的内容长度限制得更长一些,增加“解密”成本。

结语

所以,实际上现在所有的MD5所谓的解密过程,其实就是用彩虹表来猜测明文的过程,就像考试一样,明明你什么也不会,但是你有答案!

另外,对MD5的密文进行重复加密也是一种选择,加密次数越多,密文被“解密”的可能性就越小,除非想要“解密”的人知道密文的加密次数,否则就猜吧!