密码学实验报告_第1页
密码学实验报告_第2页
密码学实验报告_第3页
密码学实验报告_第4页
密码学实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、哈尔滨工程大学实 验 报 告实 验 名 称: DES加密 班 级: 学 号: 姓 名: 实 验 时 间: 2015.6.15 成 绩: 指 导 教 师: 实验室名称: 哈尔滨工程大学实验室与资产管理处 制一、实验名称MD5加密二、实验目的通过编程实现MD5加密的算法设计,并加深对其的了解。三、实验环境(实验所使用的器件、仪器设备名称及规格)WindowXP系统计算机 ,Dev C+四、实验任务及其要求根据实验原理部分对MD5加密的介绍,自己创建明文信息,并选择一个密钥,编写MD5加密的实现程序,实现加密和解密操作。五、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等)#inclu

2、de#includeusing namespace std;#define shift(x, n) (x) (32-(n)/右移的时候,高位一定要补零,而不是补充符号位#define F(x, y, z) (x) & (y) | (x) & (z) #define G(x, y, z) (x) & (z) | (y) & (z)#define H(x, y, z) (x) (y) (z)#define I(x, y, z) (y) (x) | (z)#define A 0x#define B 0xefcdab89#define C 0x98badcfe#define D 0x/strBaye的

3、长度unsigned int strlength;/A,B,C,D的临时变量unsigned int atemp;unsigned int btemp;unsigned int ctemp;unsigned int dtemp;/常量ti unsigned int(abs(sin(i+1)*(2pow32)const unsigned int k= 0xd76aa478,0xe8c7b756,0xdb,0xc1bdceee, 0xf57c0faf,0x4787c62a,0xa,0xfd,0xd8, 0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b,0xfd, 0xae

4、,0x49b40821,0xf61e2562,0xc040b340,0x265e5a51, 0xe9b6c7aa,0xd62f105d,0x,0xd8a1e681,0xe7d3fbc8, 0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,0xa9e3e905, 0xfcefa3f8,0x676f02d9,0x8d2a4c8a,0xfffa3942,0x8771f681, 0x6d9d6122,0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60, 0xbebfbc70,0x289b7ec6,0xeaa127fa,0xd4e

5、f3085,0x04881d05, 0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,0xf, 0x432aff97,0xab9423a7,0xfc93a039,0x655b59c3,0x8f0ccc92, 0xffeff47d,0x85845dd1,0x6fa87e4f,0xfe2ce6e0,0xa, 0x4e0811a1,0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391;/向左位移数const unsigned int s=7,12,17,22,7,12,17,22,7,12,17,22,7, 12,17,22,5

6、,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20, 4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10, 15,21,6,10,15,21,6,10,15,21,6,10,15,21;const char str16=abcdef;void mainLoop(unsigned int M) unsigned int f,g; unsigned int a=atemp; unsigned int b=btemp; unsigned int c=ctemp; unsigned int d=dtemp; for (unsign

7、ed int i = 0; i 64; i+) if(i16) f=F(b,c,d); g=i; else if (i32) f=G(b,c,d); g=(5*i+1)%16; else if(i48) f=H(b,c,d); g=(3*i+5)%16; else f=I(b,c,d); g=(7*i)%16; unsigned int tmp=d; d=c; c=b; b=b+shift(a+f+ki+Mg),si); a=tmp; atemp=a+atemp; btemp=b+btemp; ctemp=c+ctemp; dtemp=d+dtemp;/*填充函数*处理后应满足bits448(

8、mod512),字节就是bytes56(mode64)*填充方式为先加一个1,其它位补零*最后加上64位的原来长度*/unsigned int* add(string str) unsigned int num=(str.length()+8)/64)+1;/以512位,64个字节为一组 unsigned int *strByte=new unsigned intnum*16; /64/4=16,所以有16个整数 strlength=num*16; for (unsigned int i = 0; i num*16; i+) strBytei=0; for (unsigned int i=0;

9、 i 2|=(stri)2表示i/4 一个unsigned int对应4个字节,保存4个字符信息 strBytestr.length()2|=0x80(str.length()%4)*8);/尾部添加1 一个unsigned int保存4个字符信息,所以用128左移 /* *添加原长度,长度指位的长度,所以要乘8,然后是小端序,所以放在倒数第二个,这里长度只用了32位 */ strBytenum*16-2=str.length()*8; return strByte;string changeHex(int a) int b; string str1; string str=; for(int

10、 i=0;ii*8)%(18)&0xff; /逆序处理每个字节 for (int j = 0; j 2; j+) str1.insert(0,1,str16b%16); b=b/16; str+=str1; return str;string getMD5(string source) atemp=A; /初始化 btemp=B; ctemp=C; dtemp=D; unsigned int *strByte=add(source); for(unsigned int i=0;istrlength/16;i+=16) unsigned int num16; for(unsigned int j

11、=0;jss; string s=getMD5(ss); couts; return 0;六、实验步骤Md5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory For Computer Science和Rsa Data Security Inc的Ronaldl.rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式,即将一个任意长度的“字节串”通过一个不可逆的字符串变换算法变换成一个128bit的串。MD5是一个安全的散列算法,输入两个不同的明

12、文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文七、实验过程与分析八、实验结果总结通过这次实验了解到哈希函数的特点:压缩性、容易计算、抗修改性、弱抗碰撞、强抗碰撞。而这次实验的主要目的是验证MD5算法,虽然在课堂上做实验的时间有限,MD5算法又很繁杂,但是在老师的讲解下还是能懂的。其实要验证MD5算法最主要是要计算机的辅助,因为人工计算的可能性不大,通过计算机的计算,我们可以容易进行求和运算,当完成了最后一个明文分组运算时,A,B,C,D中的数值就是最后的散列函数值。九、心得体会通过本次实验,我了解了DES加密算法的编译以及通过DES对于密码的明文加密和密文解密的流程,并为以后的密码算法编程打好基础。更加熟悉的了解c+环境的编程方式。学生自评项目评定内容评定结果预习情况1、 实验准备情况2、 预习报告完整性()优秀()良好()中等()及格()不及格实验表现1、 实验规范性2、 实验原理掌握3、 调试排错能力4、 操作熟练

温馨提示

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

评论

0/150

提交评论