密码学课程试验项目报告-哈希函数试验_第1页
密码学课程试验项目报告-哈希函数试验_第2页
密码学课程试验项目报告-哈希函数试验_第3页
密码学课程试验项目报告-哈希函数试验_第4页
密码学课程试验项目报告-哈希函数试验_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、舟派邦乐我尊陀密码学学生实验报告ChengduMes&ftUniveohy密码学学生实验报告、实验目的1 .进一步熟悉MD5WSHA1并巩固掌握。2 .熟悉哈希函数的作用,掌握哈希函数的结构,并进行安全性分析。3 .编程能力的锤炼。、实验内容解答实验步骤在书上及网上查阅可知在MD5算法中,首先需要对信息进行填充,使其字节长度与448*H512同余,即信息的字节长度扩展至n*512+448,n为一个正整数。填充的方法如下:在信息的后面填充第一位为1,其余各位均为0,直到满足上面的条件时才停止用0对信息填充。然后,再在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的

2、信息字节长度为n*512+448=(n+1)*512,即长度恰好是512的整数倍,这样做的目的是为满足后面处理中后面处理中对信息长度的要求。n个分组中第q个分组表示为Yq。MD5中有A、日CD,4个32位被称作链接变量的整数参数,它们的初始值分别为:A=01234567B=89abcdef,C=fedcba98,D=76543210。当设置好这个4个链接变量后,就开始进入算法的4轮循环运算。循环的次数是信息中512位信息分组数目。首先将上面4个链接变量复制到另外4个变量中A到AA,B到BB,C到CCD到DD以备后面进行处理。然后进入主循环,主循环有4轮,每轮循环都很相似。第1轮进行16次操作,

3、每次操作对AB、5口协的其中3个作一次非线性函数运算,然后将所得结果加上第4个变量,文本的一个子分组和一个常数。再将所得结果向左循环移S位,并加上A、B、C或D其中之一。最后用该结果取代A、BC或D其中之一。以下是每次操作中用到的4个非线性函数(每轮一个)。F(B,C,D)=(BAC)V(BAD)(此处需修改)G(B,C,D)=(BAD)V(CAD)H(B,C,D)=BCDI(B,C,D)=C(BVD)(注:A是与,V是或,是非,是异或。)2卜面为每一轮16步操作中的4次操作,16步操作按照一定次序顺序进行。FF(A,B,C,D,Mj,S,TiGG(A,B,C,D,Mj,S,TiHH(A,B,

4、C,D,Mj,S,TiII(A,B,C,D,Mj,S,Ti)表示A=B+(A+(F(B,C,D)+Mj+Ti)S)表示A=B+(A+(G(G,C,D)+Mj+Ti)S)表示A=B+(A+(H(B,C,D)+Mj+Ti)S)表示A=B+(A+(I(B,C,D)+Mj+Ti)S)(注:+”定义为mod232的模运算。)Mj表示在第q个512位数据块中的第j个32位子分组,0WjW15。常数Ti可以有如下选择,在第i步中,Ti是4294967296*abs(sin(i)的整数部分(注:4294967296=232。),i的单位是弧度。其中,Ti是32位的随机数源,它消除了输入数据中任何规律性的特征。

5、表1-4说明了四轮主循环中每轮16步操作的具体步骤。密码学学生实验报告然后用下一分组所有这些完成之后,将A、B、C、D分别加上AABRCG数据继续运行算法,最后的输出是AB、C和D的级联。实验代码#include#include#include#includetypedefunsignedchar*POINTER;typedefunsignedshortintUINT2;typedefunsignedlongintUINT4;typedefstructUINT4state4;UINT4count2;unsignedcharbuffer64;MD5_CTX;voidMD5Init(MD5_CTX

6、*);unsignedvoidMD5Update(MD5_CTX*,unsignedchar*,int);voidMD5Final(unsignedchar16,MD5_CTX*);#defineS117#defineS1212#defineS1317#defineS1422#defineS215#defineS229#defineS2314#defineS2420#defineS314#defineS3211#defineS3316#defineS3423#defineS416#defineS4210#defineS4315#defineS4421staticunsignedcharPADD

7、ING64=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,0,0,0,0);#defineF(x,y,z)(x)&(y)|(x)&(z)#defineG(x,y,z)(x)&(z)|(y)&(z)#defineH(x,y,z)(x)A(y)A(z)#defineI(x,y,z)(y)a(x)|(z)#defineROTATE_LEFT(x,n)(x)(32-(n)#defineF

8、F(a,b,c,d,x,s,ac)(a)+=F(b),(c),(d)+(x)+(UINT4)(ac);(a)ROTATE_一LEFT(a),(s);(a)+=(b);#defineGG(a,b,c,d,x,s,ac)(a)+=G(b),(c),(d)+(x)+(UINT4)(ac);(a)ROTATE_LEFT(a),(s);(a)+=(b);#defineHH(a,b,c,d,x,s,ac)(a)+=H(b),(c),(d)+(x)+(UINT4)(ac);(a)ROTATE_LEFT(a),(s);(a)+=(b);#defineII(a,b,c,d,x,s,ac)(a)+=I(b),(c

9、),(d)+(x)+(UINT4)(ac);(a)ROTATE_LEFT(a),(s);(a)+=(b);inlinevoidEncode(unsignedchar*output,UINT4*input,unsignedintlen)unsignedinti,j;for(i=0,j=0;j8)&char)(inputi16)&char)(inputi24)&)密码学学生实验报告inlinevoidDecode(UINT4*output,unsignedchar*input,unsignedintlen)unsignedinti,j;for(i=0,j=0;jlen;i+,j+=4)output

10、i=(UINT4)inputj)|(UINT4)inputj+1)8)|(UINT4)inputj+2)count0=context-count1=0;context-state0=0x67452301;context-state1=0xefcdab89;context-state2=0x98badcfe;context-state3=0x10325476;inlinevoidMD5Update(MD5_CTX*context,unsignedchar*input,unsignedintinputLen)unsignedinti,index,partLen;index=(unsignedint

11、)(context-count03)&0x3F);if(context-count0+=(UINT4)inputLen3)(UINT4)inputLencount1+;context-count1+=(UINT4)inputLen29);密码学学生实验报告partLen=64-index;if(inputLen=partLen)memcpy(POINTER)&context-bufferindex,(POINTER)input,partLen);MD5Transform(context-state,context-buffer);for(i=partLen;i+63state,&inputi)

12、;index=0;elsei=0;memcpy(POINTER)&context-bufferindex,(POINTER)&inputi,inputLen-i);inlinevoidMD5Final(unsignedchardigest16,MD5_CTX*context)unsignedcharbits8;unsignedintindex,padLen;Encode(bits,context-count,8);index=(unsignedint)(context-count03)&0x3f);padLen=(indexstate,16);memset(POINTER)context,0,

13、sizeof(*context);voidMD5Digest(char*pszInput,unsignedlongnInputSize,char*pszOutPut)MD5_CTXcontext;unsignedintlen=strlen(pszInput);MD5Init(&context);MD5Update(&context,(unsignedchar*)pszInput,len);般砰乐我和玄密他学学生实验报告OhengduMew&ftUniwortyMD5Final(unsignedchar*)pszOutPut,&context);)Intmain()charszDigest16;

14、charencrypt200;printf(请输入要计算MD5fi的字符串:);gets(encrypt);printf(n加密结果:);MD5Digest(encrypt,strlen(encrypt),szDigest);inti;for(i=0;icoantOJq(5-index)8);1);(*cantext)Lt.longin;ledDlitcLT-)pszlnpJLjrip3r1coritekz)3)&:1120nlnputSijlen);清输入要i-茸巴巴值的字符串:】居1门1加440口匚物苹果:?4工4口再工FMK匚50克尔0口6区域第FC密码学学生实验报告D;A-CQdaBhclaCQdeBlocks17,12C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论