欢迎光临散文网 会员登陆 & 注册

摘要算法MD5

2023-02-11 08:34 作者:CSDN首席喷子  | 我要投稿

摘要算法MD5是MD4算法的一个修改版本,虽然算法速度降低了,但安全性有所提升。后来的SHA-1和SHA-2都基于MD4开发,所以这些算法的结构都是相似的。算法内部维护128位的输出缓存、512位输入缓存、64位的数据长度和128位的临时值,描述如下:

(1)消息长度被扩增至512(64字节)的整数倍余448位(56字节),如果扩增前数据长度小于56字节,就将最后一个字节设为0x80,然后将直至56字节的全部设为0。反之如果大于56字节,就将最后一个字节设为0x80,再将这64字节输入缓存中剩下的数据设为0,然后重开,56字节数据。

(2)填充后的数据必然是512的整数倍余448位,然后将数据长度(RFC 1321有个巨坑,数据长度是按位数计算的,不是按字节)填充至剩下的64位里面,这时长度就变成512的整数倍了。

(3)将128位输出缓存按小端初始化为:

(4)定义F、G、H、I四种运算:

(5)定义32位移位运算和FF、GG、HH、II四种运算:

(6)输入缓存按512位为一组,参与输出缓存的64次轮运算(各16次FF、GG、HH、II)。

(7)输出128位输出缓存。

C++实例如下,老规矩使用流式计算方法,能够输入任意长度的数据:



摘要算法MD5的评论 (共 条)

分享到微博请遵守国家法律