《现代密码学》课程实验报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《现代密码学》 课程实验报告 上课纪律(20%) 实验过程及结果(40%) 实验报告质量(40%) 总分: 教师签字: 致谢 本次程序设计试验得到了各位老师和同学们的热情帮助,特别是在相关参考程序的解读和程序编写上面,得到了大家的热情帮助,在此表示感谢。 项目一、古典密码设计实验 1 实验内容 编写仿射密码算法的实现程序; (2)利用仿射密码算法实现对简单英文文档的加密。 2 主要程序代码清单 #includeiostream #includemath.h #define M 26 //定义密钥空间 using namespace std; int Inverse (int a)//逆元函数 { for(int i=2;ia;i++) { if((a%i == 0)(M%i == 0)) { cout请输入互素的元素:endl; cout他们存在公因子且他们的公因子为:iendl; return -1;// 返回-1 } } struct vector { int a; int b; }; int temp = 0,temp_a,temp_b; vector v1,v2; v1.a = 0; v1.b = M; v2.a = 1; v2.b = a; while(true) { temp = int(v1.b/v2.b); temp_a = v1.a; temp_b = v1.b; v1.a = v2.a; v1.b = v2.b; v2.a = temp_a - temp * v2.a; v2.b = temp_b - temp * v2.b; if(v2.b == 1) break; } if(v2.a 0) return v2.a; else return M+v2.a; } int Encryption(int m,int k1,int k2) { return (k1*m+k2)%M; } int Decryption(int c,int k1,int k2) { int temp_k = Inverse(k1); int result = (temp_k*(c-k2))%26; if(result0) return result; else return M+result; } void main() { int k1=11,k2=3,m=13,c; c = Encryption(m,k1,k2); cout仿射密码的明文为:m,仿射密码的密钥为:(k1,k2),算法实现结果为:加密过程endl; coutcendl; cout仿射密码的密文为:c,仿射密码的密钥为:(k1,k2),算法实现结果为:解密过程endl; m = Decryption(c,k1,k2); coutmendl; } 3 测试数据与实验结果 (1)测试数据: 定义整数型数据,密钥 k1=11,密钥k2=3,明文为m=13,密文为c 利用e(x)=(k1x+k2)mod26 d(y)=k1_(y-k2)mod26 求解加密解密数据。 实验结果:程序实现截图: 4.总结 本次程序设计我们利用古典放射密码进行程序设计,因此程序设计比较简单,我们引用西安电子科技大学《密码学基础》中的一个放射密码例题,定义整数型数据,密钥 k1=11,密钥k2=3,明文为m=13,密文为c利用 e(x)=(k1x+k2)mod26 d(y)=k1_(y-k2)mod26 求解加密解密数据。 我们分别对输入的明文进行加密和解密运算,所得到的结果是相一致的,因此这就验证了我们的程序设计是完全正确的。 上课纪律(20%) 实验过程及结果(40%) 实验报告质量(40%) 总分: 教师签字: 《现代密码学》 课 程 实 验 报 告 项目名称: RSA公钥密码算法实验 学生姓名: 刘艳龙 学生学号: 200807020116 指导教师: 范安东 完成日期: 2011年7月5日 项目二、RSA公钥密码算法实验 1 实验内容 (1)编写获取两个大素数的程序; (2)编写RSA加解密算法的程序。 2 主要程序代码清单(C++) #includeiostream #includecmath using namespace std; void main() { int a,b;//输入两个互素的大数 cout请输入两个大数(互素的数):endl; cinab; couta=a,b=bendl; int n,x; n=a*b; x=(a-1)*(

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档