为什么要写这篇文章
鉴于今天摸索了一上午,终于搞清楚了彩虹表的实现原理,特此记录,以备后查。
什么是彩虹表
7788的术语我就不多说了,简而言之,就是一种破解md5或者sha1这种哈希散列算法的一种办法。
彩虹表的实现原理
在说彩虹表之前,先说说已经存在的几种破解类似md5这种哈希散列算法方法
方法一:暴力破解
我们假设有一个明文123456通过md5加密后得到密文 E10ADC3949BA59ABBE56E057F20F883E
,那么我们有了这段密文如何反推他的明文呢?我们假设我们知道他的明文是一个6位数的明文,暴力破解就是不停的算,先用111111进行md5看看得到多少,然后和密文比,发现不一样,然后用111112进行md5再和密文比,还是不一样,就这样一直循环,直到找到一个数n的密文也是 E10ADC3949BA59ABBE56E057F20F883E
,那么就说明他的明文可能就是n.为什么说是可能呢?因为对于不同的数进行md5运算后可能会得到同样的密文。很明显这种方式的效率是十分低下的,每一个数我们都要进行一次md5运算然后再把结果和密文进行对比,