MD5算法实现补充

关于MD5怎样实现的这篇博客讲的很详细和容易理解,我就不再进行搬砖了,也感谢原作者的分享

https://blog.csdn.net/hla199106/article/details/45129963#commentBox

补充:

这篇博客虽然讲解实现过程中的算法很详细,但却中间漏掉了关于原文件如何进行分组,和为什么要在算法的一开始对文件数据进行填充,看完博客发现这个问题,查阅资料后决定写下本文来解决这个问题

MD5算法在开始前需要对数据进行填充,填充目的是要使文件的位长度正好是512的整数次倍,但填充分为两部分,一部分是使用一个1开头的位和多个0进行补充的位来填充到文件数据位长度达到N*512+448的数据长度,N为整数,由文件数据长度决定,为什么这里是448位的余数呢?

因为在填充完1和0之后,我们还需要在填充结果后面填充一个64位的表示文件信息长度(单位bit)的数据,加起来是N*512+448+64=(N+1)*512这正好是512的整数倍,也为后面分组进行了铺垫

在引用的博客中提到初始化变量这说明了这是一组128位的数据,分别为A,B,C和D表示,它们每一个表示的数据刚好是32位,MD5算法实现过程中需要加上原文分组的某一段,这正好是512个位,所以从这我们可以看出为什么需要原文的位长度是512的整数倍,因为我们需要按512位对它进行分组,对每一组在进行算法实现,这正是文中没有提到的一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值