版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上机实验报告(一)实验课程:应用密码学 实验时间:2013年9月26日任课教师:刘光军班级:11级信息与计算科学专业1班 姓名:刘静 学号:0202110123一、实验名称: 密码学基本算法的实现(一)二、实验目的学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。三、实验要求1、在D盘建立一个自己的文件夹;2、开启软件平台Visual C+6.0,在此环境下进行编程实验;3、将题目、你输入的命令、程序及运行结果保存在word文件中,作为作业提交; 4、若出现错误,修改、运行直到输出正确结果。四、报告正文(文档,数据,模型,程序
2、,图形)1、编写程序实现仿射加密和Playfair密码。通过讨论分析单表代替密码和多表代替密码算法的功能需求,详细设计实现代替密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。算法的实现程序必须提供加密和解密两个接口:intencrypt()和intdecrypt()。当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。/*加密的实现*/#include #include #include char book55= ; /密码本.设为全局变量. /*查找在密码本中的位置。*/int findlocation(char m,int *t)int i,j;i
3、nt temp; /表示行数.for(i=0;i5;i+)for(j=0;j5;j+)if(m=bookij)*t=j;temp=i;i=5; /不必再循环。j=5;return temp; /返回行数。/*密码输出函数*/void out_put(int s0,int t0,int s1,int t1)char c2= ;if(s0=s1) /同一行。c0=books0(t0+1)%5;c1=books0(t1+1)%5;else if(t0=t1) /同一列.c0=book(s0+1)%5t0;c1=book(s1+1)%5t0;else /不同行不同列.c0=books0t1;c1=bo
4、oks1t0;printf(%c,c0); /输出已加密的两个字符.printf(%c,c1);/*对明文加密. */ void Encrypt()char m2= ; /明文数组.char temp,ch;char flag1,flag2; /用来标志上一轮中处理的第二个字母,提高解密精度.int s0,t0,s1,t1,i; /两个字符的位置参数.temp= ; /初始化为空字符.i=0; /控制变量.flag1=m1; /初始化.while(ch=getchar()!=n)if(ch= ) /如果输入的是空格跳过去.continue;if(ch=j) /如果输入的是j则当作i处理.ch=
5、i;mi+=ch; /赋入数组.if(temp!= ) /如果上一步操作中有两个相同的字母.m1=m0;m0=temp;temp= ;i=2; /标志变量,不必再输入下一个.if(i!=2) /数组赋满,则跳过.continue;i=0;if(m0=m1) /如果两个字母相同,则处理成不相同的.temp=m1;flag2=x;while(m1=m0|m1=flag1)m1=flag2+;flag1=m1;s0=findlocation(m0,&t0); /列值传递的是地址.s1=findlocation(m1,&t1);m0= ;out_put(s0,t0,s1,t1);/在密码本中打印密码.
6、 /*不会出现的情况是:temp!= & m0!=n */if(temp!= |m0!= ) /此处是为了防止出现什么也没有输入的情况。if(m0= &temp!= ) /最后刚好剩余一位.m0=temp;m1=flag2=x;while(m1=m0|m1=flag1)m1=flag2+;if(temp= &m0!= ) /最后剩余一位并且上一轮中有相同的字母./m0=temp;m1=flag2=x;while(m1=m0|m1=flag1)m1=flag2+;s0=findlocation(m0,&t0);s1=findlocation(m1,&t1);out_put(s0,t0,s1,t1
7、);/*构造密码本*/void createbook()char key; /key密钥int temp25= ;/临时数组,记录密钥中出现字母的位置. int t,flag=0; /辅助变量. flag用于定位新出现字母的位置. /*构造密码本. */ for(t=0;t25;t+) /对整型数组赋值. tempt=26;while(key=getchar()!=n) /此处要极其注意,用换行符表示其结束. if(keyj)t=key-a-1;if(tempt=26) /若未出现过,则记录其位置. tempt=flag+;for(t=0;t25;t+) /完善字母的顺序,并映射到密码本。if
8、(tempt=26) /将未出现过的字母按字母表顺序在数组中编号. tempt=flag+;if(t+aj)/按照次序将临时数组中的字母映射到密码本中. booktempt/5tempt%5=t+a; /处理小于i的情况。else booktempt/5tempt%5=t+a+1; /处理大于j的情况。for(t=0;t25;t+) /打印。printf(%d ,tempt); printf(n);for(t=0;t25;t+) /打印。printf( %c,bookt/5t%5);if(!(t+1)%5) printf(n);/*主函数*/int main()createbook(); /构
9、造密码本。Encrypt(); /进行加密。printf(n);return 0;/*解密*密码本构造函数相同.*部分不同.*/#include #include #include char book55= ; /密码本.设为全局变量. /*查找在密码本中的位置。*/int findlocation(char m,int *t)int i,j;int temp; /表示行数.for(i=0;i5;i+)for(j=0;j5;j+)if(m=bookij)*t=j;temp=i;i=5; /不必再循环。j=5;return temp; /返回行数。/*密码输出函数*/void out_put(c
10、har str1001)char c2= ;char cip1001;int s0,t0,s1,t1;int i,j;i=j=0;while(stri!=0)s0=findlocation(stri+,&t0);s1=findlocation(stri+,&t1);if(s0=s1) /同一行。c0=books0(t0+4)%5;c1=books0(t1+4)%5;else if(t0=t1) /同一列.c0=book(s0+4)%5t0;c1=book(s1+4)%5t0;else /不同行不同列.c0=books0t1;c1=books1t0;cipj+=c0;cipj+=c1;j=str
11、len(str);i=0;while(i+2j)printf(%c,cipi);if(cipi!=cipi+2)i+;elsei+=2;if(i!=j-1)printf(%c,cipi+);printf(%cn,cipi);/*对密文解密. */ void Decry()char str1001;gets(str);if(strlen(str)%2=1)printf(密文的个数不能是奇数!);return 0;elseout_put(str);/*构造密码本*/void createbook()char key; /key密钥int temp25= ;/临时数组,记录密钥中出现字母的位置. i
12、nt t,flag=0; /辅助变量. flag用于定位新出现字母的位置. /*构造密码本. */ for(t=0;t25;t+) /对整型数组赋值. tempt=26;while(key=getchar()!=n) /此处要极其注意,用换行符表示其结束. if(keyj)t=key-a-1;if(tempt=26) /若未出现过,则记录其位置. tempt=flag+;for(t=0;t25;t+) /完善字母的顺序,并映射到密码本。if(tempt=26) /将未出现过的字母按字母表顺序在数组中编号. tempt=flag+;if(t+aj)/按照次序将临时数组中的字母映射到密码本中. booktempt/5tempt%5=t+a; /处理小于i的情况。else booktempt/5tempt%5=t+a+1; /处理大于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024宾馆室内装修合同标准样本
- 2024房屋名额转让协议,房屋名额转让协议范本,写购房名额转让合同
- 2024担保合同格式参考
- 2024家教的劳动合同范本
- 2024软件开发合同标准模板
- 小区车库广告位租赁合同
- 产品临时借用协议
- 建筑业劳动合同:退休政策改革与规范
- 历史文化遗产保护拆迁合同
- 农业项目合作书参考
- 坐标纸(网格型坐标纸-直接打印即可)
- GB/T 39633-2020协作机器人用一体式伺服电动机系统通用规范
- FZ/T 01002-2010印染企业综合能耗计算办法及基本定额
- 药品储备评估表
- 国家自然科学基金申请经验汇总课件
- 青春期女孩自尊自爱课件
- 2023年西藏开发投资集团有限公司招聘笔试题库及答案解析
- 小学语文人教三年级上册观察桔子孙娟课件
- 藏族人的名字标准英语翻译
- 市场营销产品组合与产品策略课件
- 医院会计实务操作培训课件
评论
0/150
提交评论