资源描述:
《md5算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划md5算法实验报告 实验四:密码学MD5实验报告 实验三MD5算法的设计与实现MD5算法及C++实现 一、理论部分: 1、预备知识 什么是数据校验 通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。 最简单的检验 实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。 适用范围:
2、简单的数据量极小的通讯。 应用例子:龙珠cpu在线调试工具。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 奇偶校验ParityCheck目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。 应用例子:单片机串口通讯有一
3、模式就是8位数据通讯,另加第9位用于放校验值。 bcc异或校验法(blockcheckcharacter) 实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值异或一次,最后的结果就是校验值,通常 把她附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。 校验值计算的代码类似于: unsigneduCRC=0;//校验初始值 for(inti=0;imd5算法实验报告)结果加上第4个变量,文本的一个子分组和一个常数。再将所得结果向左循环移S位,并加上A、B、C
4、或D其中之一。最后用该结果取代A、B、C或D其中之一。 以下是每次操作中用到的4个非线性函数。 F=(B∧C)∨__________( G=(B∧D)∨(C∧D) H=B⊕C⊕D I=C⊕(B∨D)目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 下面为每一轮16步操作中的4次操作,16步操作按照一定次序顺序进行。FF表示A=B+(A+(F(B,C,D)+M[j]+T[i]) #inc
5、lude #include #include typedefunsignedchar*POINTER; typedefunsignedshortintUINT2; typedefunsignedlongintUINT4; typedefstruct { UINT4state[4]; UINT4count[2]; unsignedcharbuffer[64]; }MD5_CTX; voidMD5Init(MD5_CTX*); voidMD5Update(MD5_CTX*,unsignedchar*,unsignedint); voidMD5Final(unsi
6、gnedchar[16],MD5_CTX*); #defineS117 #defineS1212 #defineS1317 #defineS1422 #defineS215目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 #defineS229 #defineS2314 #defineS2420 #defineS314 #defineS3211 #defineS3316 #d
7、efineS3423 #defineS416 #defineS4210 #defineS4315 #defineS4421 staticunsignedcharPADDING[64]={ 0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0