MD系列算法是信息摘要三大算法中的一种,全称:Message Digest算法,按照规范版本分为MD2、MD4、MD5三种算法,目前最常用的是MD5版本算法。
1989年,是由著名的非对称算法RSA发明人之一--麻省理工学院教授罗纳德-里维斯特开发的;这个算法首先对信息进行数据补位,使信息的字节长度是16的倍数,再以16位的检验和作为补充信息追加到原信息的末尾。最后根据这个新产生的信息计算出一个128位的散列值,MD2算法由此诞生。
1990年,在MD2基础上发展出MD4算法,1991年,MD4的创始人开发出
MD5算法:
(1)和MD2一样,仍然对信息进行补位,但是补位时要添加448个字节, 变为512的倍数。
(2)仍对信息做散列,获取一个128位的散列值,得出MD4值。
MD4的算法影响很大,比如MD5、SHA-1、Ripe-MD系列都是从MD4基础上衍生出来的。
(1)MD5的特点
长度固定:不管多长的字符串,加密后长度都是一样长。
作用:方便平时信息的统计和管理。
详解:经过MD5加密生成一个固定长度为128bit的串。因为128位0 和1的二进制串表达不友好,因此转化为了16进制,128/4 = 32位的 16进制。将32位去掉前8位和后8位得到的是16位。因此会有MD5的 32位 和16位加密说法。
(2)易计算
字符串和文件加密的过程是容易的。
作用:开发者很容易理解和做出加密工具。
(3)细微性
一个文件,不管多大,小到几k,大到几G,你只要改变里面某个字符,那么 都会导致MD5值改变。
作用:很多软件和应用在网站提供下载资源,其中包含了对文件的MD5码, 用户下载后只需要用工具测一下下载好的文件,通过对比就知道该文件是 否有过更改变动。
(4)不可逆性
你明明知道密文和加密方式,你却无法反向计算出原密码。
作用:基于这个特点,很多安全的加密方式都是用到,大大提高了数据的 安全性。
不可逆的原因:摘要是部分内容,因此由MD5的密文和加密方式会得 到很多明文,而无法确定明文。
一个原始数据,只对应一个md5值;但是一个md5值,可能对应多个原
始数据。
补充:MD5常用于字符串和文件的加密。
关于撞库破解:这是概率极低的破解方法,原理就是:
(1)建立一个大型的数据库,把日常的各个语句,通过MD5加密成为密文, 不断的积累大量的句子,放在一个庞大的数据库里。
(2)比如一个人拿到了别人的密文,想去查询真实的密码,就需要那这个 密文去到提供这个数据库的公司网站去查询。
这就是撞库的概念。
比如我的银行密码是"12345"
(1)得到的MD5是:827ccb0eea8a706c4c34a16891f84e7b
(2)一个人截取到这个密文,那么通过撞库肯定容易撞出12345.
(3)我们要做的就是加盐,银行密码还是"12345",然后我把银行密码加 上我特定的字符串才计算MD5。
所以密码还是那个密码,但是变成求"12345密码加密987"的MD5值,然后 再得到MD5,那么这个MD5起码可以确认那个数据库不会有。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课