密码用MD5加密后一定安全吗
密码用MD5加密后一定安全吗
我们知道在保存数据密码时不能使用明文,会使用MD5加密后保存来保证安全,使用MD5加密也比较简单,一般程序语言中会提供MD5加密函数,开发者只要调用MD5函数就可以对密码进行加密。那么MD5加密是不是一定安全呢?
我们知道MD5加密后的密文是32位,16位的MD5就是32位MD5的中8位到24位的值,如果密码MD5加密后被别人获取,攻击者能破解吗,答案是可以的。
目前一般破解MD5的方法有两种,一种为彩虹表,一种为专业MD5破解站点。
1、彩虹表
彩虹表是一个庞大的,针对各种可能的字母组合预先计算好的哈希值的集合,彩虹表不仅针对MD5算法,主流的算法都有对应的彩虹表。使用彩虹表可以破解各类密码,彩虹表也是非常大的存在,如果一个个比对,可能是个天文时间,但使用NVidia CUDA技术,NTLM算法对MD5的尝试可达每秒1000亿次。可根据破解的密文类型来下载对应彩虹表,也可以使用Cain等工具生成彩虹表。
2、网站解密
当然还有不少站点提供了破解的MD5功能,如www.cmd5.com等。攻击者在拖库后发现密码为MD5加密,一般都会使用这类网站批量解密。
由此可知,MD5加密后是可以被破解的,当然也可以使用复杂密码,加大破解难度,但我们不能期望所有人都有安全意识,所以应该在算法上采取措施。比如对字符串进行MD5加密后,在第6个字符后插入一个1位随机数字,然后对这个字符串进行二次MD5加密,虽然比原MD5仅多两个步骤,但安全性却大大提高了。攻击者在无法得知源代码的情况下,很难将其解密,即使得知了其加密算法,解密难度也是非常大。
由此可见,开发者需要采用一些新的加密算法,这样即使被拿到密文,攻击者也无从下手,或者需要天文数字的时间来解密,这样基本就能保证数据安全。