云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 什么是MD5码怎样校验MD5码

什么是MD5码怎样校验MD5码

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 7:17:31

MerKle成功地攻击了前两轮。尽管这些攻击都没有扩展到整个算法,但Rivest还是改进了其算法,结果就是MD5算法。

MD5算法是MD4的改进算法,它比MD4更复杂,但设计思想相似,输入的消息可任意长,输出结果也仍为128位,特别适用于高速软件实现,是基于32-位操作数的一些简单的位操作。 2.2 算法步骤

l 将输入消息按512-位分组,最后要填充成为512位的整数倍,且最后一组的后64位用来填充消息长度(填充前)。填充方法为附一个1在消息后,后接所要求的多个0。这样可以确保不同消息在填充后不相同。

l 由于留出64位用来表示消息长度,那么消息的长度最多可达264字节,相当于4G×4G字节,文件的长度是不可能达到这么大,因此通常都是只采用64位中的低32位来表示消息长度,高32位填充0。

l 初始化MD变量。由于每轮输出128位,这128位可用下面四个32位字A,B,C,D来表示。其初始值设为: A=0x01234567 B=0x89ABCDEF C=0xFEDCBA98 D=0x76543210

l 开始进入算法主循环,循环的次数是消息中512位消息分组的数目。先将上面A、B、C、D四个变量分别复制到另外四个变量a、b、c、d中去。主循环有四轮,每轮很相似。每轮进行16次操作,每次操作对a、b、c、d四个变量中的三个作一次非线性函数运算,然后将所得结果加上第四个变量,消息的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。 以下是每次操作中用到的四个非线性函数(每轮一个)。 F(X,Y,Z)=(X∧Y)∨(( X)∧Z) G(X,Y,Z)=(X∧Z)∨(Y∧( Z)) H(X,Y,Z)=X⊕Y⊕Z

I(X,Y,Z)=Y⊕(X∨( Z))

其中,⊕是异或,∧是与,∨是或, 是反符号。

这些函数是这样设计的:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。函数F是按逐位方式操作:如果X,那么Y,否则Z。函数H是逐位奇偶操作符。

设Mj表示消息的第j个子分组(从0到15),<<

FF(a,b,c,d,Mj,s,ti)表示a = b+((a+F(b,c,d)+ Mj + ti)<<

第i步中,ti是232 ×abs (sin(i))的整数部分,i的单位是弧度。

所有这些完成之后,将A,B,C,D分别加上a,b,c,d。然后用下一分组数据继

续运行算法,最后的输出是A,B,C和D的级联。

l 最后得到的A,B,C,D就是输出结果,A是低位,D为高位,DCBA组成128位输出结果。 2.3 MD5的安全性

Ron Rivest概述了MD5安全性[8]: l 与MD4相比,增加了第四轮。 l 每一步均有唯一的加法常数。

l 为减弱第二轮中函数G的对称性从((X∧Y) ∨(X∧Z) ∨(Y∧Z))变为((X∧Z) ∨(Y∧( Z)))。

l 每一步加上了上一步的结果,引起更快的雪崩效应。

l 改变了第二轮和第三轮中访问消息子分组的次序,使其形式更不相似。 l 近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。

从安全角度讲,MD5的输出为128位,若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1 000 000 000个消息的计算机需时1.07×1022年。若采用生日攻击法,寻找有相同Hash值的两个消息需要试验264个消息,用每秒可试验1 000 000 000个消息的计算机需时585年。

二、实现方法

由于此处的文件校验用到要求比较高的场合,故采用了方法6,md5校验算法,从CodeGuru下载了一个md5校验算法的实现模块,加入自己要校验的文件名,实现完成。下面具体描述一下实现过程: 1、创建一个简单的对话框程序;

2、设置CString类型的变量m_filename和m_strFileChecksum以存放要校验的文件名和校验和;

3、在对话框类中创建ChecksumSelectedFile()函数,调用md5校验和类(附录中有其实现文件)中的GetMD5计算文件校验和。

4、使用定时器定时巡检该文件的校验和,一旦发现校验和发生变化,立刻出现提示。

三、附录(md5算法实现的源码)

HashTab - 给文件属性窗口添加数字指纹校验功能(计算文件的MD5/CRC32/SHA1等值)

2007年12月17日 星期一 下午 11:17

经常下载软件的朋友一定会发现,有很多下载软件网站都提供了MD5值(图1)。

一般也提供了MD5值校验码。那么什么是MD5值呢?MD5的全程是

message-digest algorithm 5,是信息摘要算法的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,不管它是什么类型,也不管它体积多大,都有且只有一个独一无二的MD5信息值。

但是为什么在软件下载地址的后面会有MD5值呢?因为现在有很多软件被别人进行了修改,或是添加了插件、病毒木马等,或是添加其他补丁。如果这个文件被修改过,它的MD5值也将随之改变。所以可以通过对比同一文件的MD5值,来校验这个文件是否被“篡改”过。

下载了文件后,要想知道下载的这个文件和网站的原始文件是否一模一样,就可以给下载的文件做个MD5校验。如果得到的MD5值和网站公布的相同,可确认所下载的文件是完整的。如有不同,说明你下载的文件有问题。要么就是在网络下载的过程中出现错误,要么就是此文件已被别人修改。为防止他人更改该文件时放入病毒,最好不要使用。

图1 :不少网站在提供文件下载时也给出了MD5值,不同文件的MD5值是不一

样的

那么怎么才能知道文件的MD5值是否被修改呢?这里给大家介绍一款名字为HashTab的程序,安装了HashTab之后会在Windows 资源管理器的文件属性窗口中添加了一个叫做“文件校验”的标签。该标签可以帮助你方便地计算文件的 MD5、SHA1 与 CRC-32 哈希值。这些都是在你验证文件完整性时比较常用的哈希值。

首先下载HashTab到硬盘当中,运行下载的文件开始安装即可。安装完之后,就可以去网站下载文件。文件下载完毕之后,按鼠标右键进入文件属性,选择文件哈希值,就能够看到MD5值,从而就可以校验文件是否被修改过(图2)。除了可以查看MD5值之外,还能够查看SHA1、CRC-32等值。

HashTab 2 的效果截图

搜索更多关于: 什么是MD5码怎样校验MD5码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

MerKle成功地攻击了前两轮。尽管这些攻击都没有扩展到整个算法,但Rivest还是改进了其算法,结果就是MD5算法。 MD5算法是MD4的改进算法,它比MD4更复杂,但设计思想相似,输入的消息可任意长,输出结果也仍为128位,特别适用于高速软件实现,是基于32-位操作数的一些简单的位操作。 2.2 算法步骤 l 将输入消息按512-位分组,最后要填充成为512位的整数倍,且最后一组的后64位用来填充消息长度(填充前)。填充方法为附一个1在消息后,后接所要求的多个0。这样可以确保不同消息在填充后不相同。 l 由于留出64位用来表示消息长度,那么消息的长度最多可达264字节,相当于4G×4G字节,文件的长度是不可能达到这么大,因此通常都是只采用64位中的低32位来表示消息长度,高32位填充0。 l 初始化MD变量。由于每轮输出12

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com