没有合适的资源?快使用搜索试试~ 我知道了~
MD5 报文摘要算法.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 80 浏览量
2022-11-01
20:33:26
上传
评论
收藏 500KB PDF 举报
温馨提示
试读
18页
。。。
资源推荐
资源详情
资源评论
MD5 报文摘要算法
1 执行简介
本文描述了 MD5 报文摘要算法,此算法将对输入的任意长度的信息进行计算,产生一个 128
位
长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要
产生
原始信息在计算上是行不通的。MD5 算法适合用在数据签名应用中,在此应用中,一个大
的文件必
须在类似 RSA 算法的公用密钥系统中用私人密钥加密前被“压缩”在一种安全模式下。
MD5 算法能在 32 位机器上能以很快的速度运行。另外,MD5 算法不需要任何大型的置换
列表。
此算法编码很简洁。MD5 算法是 MD4 报文摘要算法的扩展。MD5 算法稍慢于 MD4 算法,
但是在设
计上比 MD4 算法更加“保守”。设计 MD5 是因为 MD4 算法被采用的速度太快,以至于还无
法证明
它的正确性,因为 MD4 算法速度非常快,它处在遭受成功秘密攻击的“边缘”。MD5 后退了
一步,
它舍弃了一些速度以求更好的安全性。它集中了不同的评论家提出的建议,并采取了一些附
加的优化
措施。它被放在公共的地方以求公众的评论意见,它可能当作一个标准被采纳。
作为基于 OSI 的应用,MD5 的对象标识符是:
md5OBJECTIDENTIFIER::=
iso(1)member-body(2)US(840)rsadsi(113549)digestAlgorithm(2)5}
在 X.509 类型 AlgorithmIdentifier[3]中,MD5 算法参数应该包括 NULL 类型。
2 术语和符号
本文中一个“字”是 32 位,一个“字节”是 8 位。一系列位串可看成是一系列字节的普通形式,
其中的连续的 8 位看成一个字节,高位在前,同理一系列字节串可看成是一系列 32 位的字,
其中每
个连续的 4 个字节当作一个字,地位在前。
我们定义 x_i 代表“x 减去 I".如果下划线左边的是一个表达式,则用括号括住,如:
x_{i+1}。同样我们用^代表求幂,这样 x^i 则代表 x 的 i 次幂。
符号“+”代表字的加,X<<<s 代表 32 位的值 X 循环左移 s 位,not(X)代表 X 的按位
补运算,XvY 表示 X 和 Y 的按位或运算,XxorY 代表 X 和 Y 的按位异或运算,XY 代表
X 和 Y 的按位与运算。
3 MD5 算法描述
我们假设有一个 b 位长度的输入信号,希望产生它的报文摘要,此处 b 是一个非负整数,b
也可
能是 0,不一定必须是 8 的整数倍,它可能是任意大的长度。我们设想信号的比特流如下所
示:
m_0m_1...m_{b-1}
下面的 5 步计算信息的报文摘要。
(1)补位
MD5 算法是对输入的数据进行补位,使得如果数据位长度 LEN 对 512 求余的结果是 448。
即数
据扩展至 K*512+448 位。即 K*64+56 个字节,K 为整数。补位操作始终要执行,即使数据
长度 LEN
对 512 求余的结果已是 448。
具体补位操作:补一个 1,然后补 0 至满足上述要求。总共最少要补一位,最多补 512 位。
(2)补数据长度
用一个 64 位的数字表示数据的原始长度 b,把 b 用两个 32 位数表示。那么只取 B 的低 64
位。
当遇到 b 大于 2^64 这种极少遇到的情况时,这时,数据就被填补成长度为 512 位的倍数。
也就是说,
此时的数据长度是 16 个字(32 位)的整数倍数。用 M[0...N-1] 表示此时的数据,其中的 N
是 16
的倍数。
(3)初始化 MD 缓冲器
用一个四个字的缓冲器(A,B,C,D)来计算报文摘要,A,B,C,D 分别是 32 位的寄存器,
初
始化使用的是十六进制表示的数字
A=0X01234567
B=0X89abcdef
C=0Xfedcba98
D=0X76543210
(4)处理位操作函数
首先定义 4 个辅助函数,每个函数的输入是三个 32 位的字,输出是一个 32 位的字。
X,Y,Z 为 32 位整数。
F(X,Y,Z)=XYvnot(X)Z
G(X,Y,Z)=XZvYnot(Z)
H(X,Y,Z)=XxorYxorZ
I(X,Y,Z)=Yxor(Xvnot(Z))
这一步中使用一个 64 元素的常数组 T[1...64],它由 sine 函数构成,T[i]表示数组中的第 i 个
元
素,它的值等于经过 4294967296 次 abs(sin(i))后的值的整数部分(其中 i 是弧度)。T[i]为 32
位
整数用 16 进制表示,数组元素在附录中给出。
具体过程如下:
/*处理数据原文*/
Fori=0toN/16-1do
/*每一次,把数据原文存放在 16 个元素的数组 X 中.*/
Forj=0to15do
SetX[j]toM[i*16+j].
end/结束对 J 的循环
/*SaveAasAA,BasBB,CasCC,andDasDD.*/
AA=A
BB=B
CC=C
DD=D
/*第 1 轮*/
/*以[abcdksi]表示如下操作
a=b+((a+F(b,c,d)+X[k]+T[i])<<<s).*/
/*Dothefollowing16operations.*/
[ABCD071][DABC1122][CDAB2173][BCDA3224]
[ABCD475][DABC5126][CDAB6177][BCDA7228]
[ABCD879][DABC91210][CDAB101711][BCDA112212]
[ABCD12713][DABC131214][CDAB141715][BCDA152216]
/*第 2 轮**/
/*以[abcdksi]表示如下操作
a=b+((a+G(b,c,d)+X[k]+T[i])<<<s).*/
/*Dothefollowing16operations.*/
[ABCD1517][DABC6918][CDAB111419][BCDA02020]
[ABCD5521][DABC10922][CDAB151423][BCDA42024]
[ABCD9525][DABC14926][CDAB31427][BCDA82028]
[ABCD13529][DABC2930][CDAB71431][BCDA122032]
/*第 3 轮*/
/*以[abcdksi]表示如下操作
a=b+((a+H(b,c,d)+X[k]+T[i])<<<s).*/
/*Dothefollowing16operations.*/
[ABCD5433][DABC81134][CDAB111635][BCDA142336]
[ABCD1437][DABC41138][CDAB71639][BCDA102340]
[ABCD13441][DABC01142][CDAB31643][BCDA62344]
[ABCD9445][DABC121146][CDAB151647][BCDA22348]
/*第 4 轮*/
/*以[abcdksi]表示如下操作
a=b+((a+I(b,c,d)+X[k]+T[i])<<<s).*/
/*Dothefollowing16operations.*/
[ABCD0649][DABC71050][CDAB141551][BCDA52152]
[ABCD12653][DABC31054][CDAB101555][BCDA12156]
[ABCD8657][DABC151058][CDAB61559][BCDA132160]
[ABCD4661][DABC111062][CDAB21563][BCDA92164]
/*然后进行如下操作*/
A=A+AA
B=B+BB
C=C+CC
D=D+DD
end/*结束对 I 的循环*/
(5)输出结果
报文摘要的产生后的形式为:A,B,C,D。也就是低位字节 A 开始,高位字节 D 结束。
现在完成了对 MD5 的描述,在附录中给出了 C 形式的程序。
4 摘要
MD5 算法实现很容易,它提供了任意长度的信息的“指纹”(或称为报文摘要)。据推测要实
现
两个不同的报文产生相同的摘要需要 2^64 次的操作,要恢复给定摘要的报文则需要 2^128
次操作。
为寻找缺陷,MD5 算法已经过非常细致的检查。最后的结论是还需要相关的更好的算法和
更进一步
的安全分析。
5 MD4 和 MD5 的区别
以下是 MD5 和 MD4 的不同点:
1. 加上了第四轮循环。
2. 每一步增加了一个唯一的常数值。
第二轮中的函数 g 从(XYvXZvYZ)变成了(XZvYnot(Z)),以减少 g 函数的均衡性。
6 参考文献
[1]Rivest,R.,"TheMD4MessageDigestAlgorithm",RFC1320,MITandRSADataSecurity,
Inc.,April1992.
[2]Rivest,R.,"TheMD4messagedigestalgorithm",inA.J.MenezesandS.A.Vanstone,
editors,AdvancesinCryptology-CRYPTO'90Proceedings,pages303-311,Springer-Verlag,
1991.
[3]CCITTRecommendationX.509(1988),"TheDirectory-Authentication
Framework."
7 附录 A-参考应用程序
本附录包括以下文件:(摘自 RSAREF:ACryptographicToolkitforPrivacy-EnhancedMail:)
global.h-全局头文件
md5.h--MD5 头文件
md5c.c--MD5 源代码
(要得到更多的 RSAREF 信息,请发 e-mai 到:<rsaref@rsa.com>.)
附录中还包括:
mddriver.c-MD2,MD4andMD5 的测试驱动程序。
驱动程序默认情况下编译 MD5,但如果在 C 的编译命令行将 MD5 参数设成 2 或 4,则也可
以编译
MD2 和 MD4
此应用程序是方便使用的,可用在不同的平台上,在特殊的平台上优化它也并不困难,这留
给读
者作为练习。例如,在“little-endian”平台上,此平台 32 位字的最低地址字节最无意义的字
节,
并且没有队列限制,在 MD5 变换中的解码的命令调用可以被相应的类型替代。
A1global.h
/*GLOBAL.H-RSAREF 类型和常数*/
/*当且仅当编译器支持函数原型的声明时,PROTOTYPES 必须被设置一次
如果还没有定义 C 编译器的标记,下面的代码使 PROTOTYPES 置为 0。*/
#ifndefPROTOTYPES
#definePROTOTYPES0
#endif
剩余17页未读,继续阅读
资源评论
G11176593
- 粉丝: 6646
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功