MD5是一种信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。它由美国密码学家罗纳德·李维斯特设计,于1992年公开,用以取代MD4算法。
MD5算法步骤分为五步:按位补充数据、扩展长度、初始化MD缓存器、处理数据段、输出。由于MD5算法具有普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域,如密码管理、电子签名等。
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
MD5可以用于密码管理。可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下,才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。这样就可以把用户的密码以MD5值(或类似的其它算法)的方式保存起来,用户注册的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,如果密文相同,就可以认定密码是正确的,否则密码错误。
通过这样的步骤,系统在并不知道用户密码明码的情况下就可以确定用户登录系统的合法性。这样不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
MD5加密原理是散列算法,散列算法也称哈希算法。
计算机专业学的数据结构就有哈希表这一知识点。
比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。
所以md5不能解密。
就算是设计这个加密算法的人都不知道。
但是你的密码是怎么验证的呢?就是因为同一密码加密后一定相同。
你输入密码加密后才能知道你的密码是否正确。
也就是说,你的密码只有你自己知道。
也是为什么扣扣密码只能重置,不能找回的原因。
over
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个 128 位( 16 字节,被表示为 32 位十六进制数字)的散列值(hash value),用于确保信息传输完整一致。MD5 由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于 1992 年公开,用以取代 MD4 算法。这套算法的程序在 RFC 1321 中被加以规范。
将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。
注意:MD5 对消息的长度没有要求。
字节的排列方式有两个通用规则
比如:存储 16 进制值 0x12345678,需要使用 4 个字节,存储字节在内存地址增长方向分别是
大端序方式存储:0x12 0x34 0x56 0x78
小端序方式存储:0x78 0x56 0x34 0x12
1996 年后被证实存在弱点,可以被加以破解,对于需要高度安全性的资料,专家一般建议改用其他算法,如 SHA-2。2004 年,证实 MD5 算法无法防止碰撞攻击,因此不适用于安全性认证,如 SSL 公开密钥认证或是数字签名等用途。
2009 年,中国科学院的谢涛和冯登国仅用了 2 20.96 的碰撞算法复杂度,破解了 MD5 的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。2011 年,RFC 6151 禁止 MD5 用作密钥散列消息认证码。
MD5 哈希后的位数一般为两种,16 位与 32 位。16 位实际上是从 32 位字符串中,取中间的第 9 位到第 24 位的部分。
MD5 32 ("123123") = "4297F44B13955235245B2497399D7A93"
MD5 16 ("123123") = "13955235245B2497"
C.报文摘要
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5采用的是对输入的任意长度的消息进行运算,产生一个128位的消息摘要。
你如果是使用MD5加密的话,非常好!虽然MD5的源代码满天飞,使用任何人都可以了解MD5的详尽算法描述,但是绝对没有任何人“可以将一个经由MD5算法加密过的字符串还原回原始的字符串”,这是真实的。
虽然说中国人“王小云教授”破解过所谓的MD5,那她的破解也是采用碰撞原理破解,如果你采用SHA和MD5的结合,她也不可能使用它的碰撞原理将其破解,换句话说,碰撞破解并不代表她能还原原始的字符串..
..
.
.
MD5加密算法原理MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述( ),这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IEFT提交。. .