MD5(Message-Digest Algorithm 5)是一种常用的哈希函数算法,用于将任意长度的数据映射为固定长度的哈希值。它通常用于数据完整性验证、密码加密等领域
MD5的特点
不可逆性:通过 MD5 算法生成的哈希值是一种紧凑的表示形式,无法直接逆推回原始数据。这使得 MD5 在密码学中被广泛应用,因为即使他人获取到哈希值,也难以还原出原始数据。
雪崩效应:即使原始数据发生微小的变化,MD5 哈希值也会产生很大的差异。这一特性使得 MD5 可以用于检测数据是否被篡改,确保数据的完整性。
快速计算:MD5 算法相对计算速度较快,在处理大量数据时效率较高。
MD5的使用场景
- 密码保护
- 完整性校验
- 数字签名
- 云盘秒传
MD5的格式
8efa61d98454af8cf42711e6ae4c2f6a # 128位比特也就是16字节
长度固定
不可逆(从结果无法反推原始数据)
高度离散型 (md5的数据没有任何规律)
抗碰撞性
MD5的生成过程
补位
1. 使长度变成n*512+448
情况一:
当数据的长度不满足n*412+448时进行补位,补1个1然后多个0,时期长度满足n*412+448
情况二:
当数据的长度满足n*412+448时也必须进行一次补位,同业也是补1个1多个0,使长度满足(n+1)*412+448
2. 使长度变成n*512的整数倍
再补上64位,也就是文件的大小记录在这最后的64位数据里面
标准幻数
标准幻数是4*4=16个字节
A=0
B=89ABCDEF
C=FEDCBA98
D=
在程序中使用的小端字节数
A=0x
B=0xEFCDAB89
C=0X98BADCFE
D=0X
函数
FF=(A,B,C,D,X,S,AC)
GG=(A,B,C,D,X,S,AC)
HH=(A,B,C,D,X,S,AC)
II=(A,B,C,D,X,S,AC)
X使下图中的4字节数据
AC是一些标准的常数

#define F(x,y,z)(((x)&(y))|((~x)&(z))) #define G(x,y,z)(((x)&(z))|((y)&(~z))) #define H(x,y,z)((x)^(y)^(z)) #define I(x,y,z)((y)^((x)|(~z))) #define ROTATELEFT(num,n)(((num)<<(n))|((num)>>(32-(n)))) #define FF(a,b,c,d,x,s,ac){\ (a) += F((b),(c),(d))+(x)+ac;\ (a) += ROTATELEFT((a),(s));\ (a) += (b);\ } #define GG(a,b,c,d,x,s,ac){\ (a) += G((b),(c),(d))+(x)+ac;\ (a) += ROTATELEFT((a),(s));\ (a) += (b);\ } #define HH(a,b,c,d,x,s,ac){\ (a) += H((b),(c),(d))+(x)+ac;\ (a) += ROTATELEFT((a),(s));\ (a) += (b);\ } #define II(a,b,c,d,x,s,ac){\ (a) += I((b),(c),(d))+(x)+ac;\ (a) += ROTATELEFT((a),(s));\ (a) += (b);\ }
讯享网
扩展
- SHA-1(Secure Hash Algorithm-1):与 MD5 类似,但比 MD5 更安全。然而,SHA-1 也已被证明存在一些安全风险,现在通常不推荐使用。
- SHA-2 系列:包括 SHA-256、SHA-384 和 SHA-512 等。这些算法比 SHA-1 更安全,并且在现代密码学和数据完整性验证中得到广泛应用。
- SHA-3:作为 SHA-2 系列的后继者,SHA-3 是一种较新的哈希函数算法,具有更高的安全性和性能。
- BLAKE2 系列:BLAKE2b 和 BLAKE2s 是相对较新的哈希函数,提供了快速的计算速度和良好的安全性。
- SM3:这是中国国家标准的哈希函数算法,用于国内的信息安全领域。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35010.html