实验三MD5算法的设计与实现.doc

实验三MD5算法的设计与实现.doc

ID:50358355

大小:66.50 KB

页数:36页

时间:2020-03-08

实验三MD5算法的设计与实现.doc_第1页
实验三MD5算法的设计与实现.doc_第2页
实验三MD5算法的设计与实现.doc_第3页
实验三MD5算法的设计与实现.doc_第4页
实验三MD5算法的设计与实现.doc_第5页
资源描述:

《实验三MD5算法的设计与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三MD5算法的设计与实现MD5算法及C++实现一、理论部分:1、预备知识1.1什么是数据校验通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。1.2最简单的检验实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。适用范围:简单的数据量极小的通讯。应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bb

2、ug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。1.3奇偶校验ParityCheck实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。1.4bcc异或校验法(blockcheckcharacter)实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常

3、把她附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。校验值计算的代码类似于:unsigneduCRC=0;//校验初始值for(inti=0;i

4、组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错。crc校验具还有自动纠错能力。crc检验主要有计算法和查表法两种方法,网上很多实现代码。适用范围:CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送8-bit字符。CRC-32:硬盘数据,网络传输等应用例子:rar,以太网卡芯片、MPEG解码芯片中1.6md5校验和数字签名实现方法:主要有md5和des算法。适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保密数

5、据的校验(数字签名)等等。应用例子:文件校验、银行系统的交易数据2、具体的实现理论2.1算法概述MD5算法是MD4算法的改进算法。RonRivest于1990年提出MD4单向散列函数,MD表示消息摘要(MessageDigest),对输入消息,算法产生128位散列值。该算法首次公布之后,BertdenBoer和AntoonBosselaers对算法三轮中的后两轮进行了成功的密码分析。在一个不相关的分析结果中,RalphMerKle成功地攻击了前两轮。尽管这些攻击都没有扩展到整个算法,但Rivest还是改进了

6、其算法,结果就是MD5算法。MD5算法是MD4的改进算法,它比MD4更复杂,但设计思想相似,输入的消息可任意长,输出结果也仍为128位,特别适用于高速软件实现,是基于32-位操作数的一些简单的位操作。2.2算法步骤l将输入消息按512-位分组,最后要填充成为512位的整数倍,且最后一组的后64位用来填充消息长度(填充前)。填充方法为附一个1在消息后,后接所要求的多个0。这样可以确保不同消息在填充后不相同。l由于留出64位用来表示消息长度,那么消息的长度最多可达264字节,相当于4G×4G字节,文件的长度是不

7、可能达到这么大,因此通常都是只采用64位中的低32位来表示消息长度,高32位填充0。l初始化MD变量。由于每轮输出128位,这128位可用下面四个32位字A,B,C,D来表示。其初始值设为:A=0x01234567B=0x89ABCDEFC=0xFEDCBA98D=0x76543210l开始进入算法主循环,循环的次数是消息中512位消息分组的数目。先将上面A、B、C、D四个变量分别复制到另外四个变量a、b、c、d中去。主循环有四轮,每轮很相似。每轮进行16次操作,每次操作对a、b、c、d四个变量中的三个作一

8、次非线性函数运算,然后将所得结果加上第四个变量,消息的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上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⊕ZI(X,Y,Z)=Y⊕(X∨(Z))其中,⊕是异或,∧是与,∨是或,是反符

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。