版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。解密算法是:m = D(L) =(L-k)mod 26;2、算法设计:
2、使用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;3、函数接口:加密:int encrypt() printf("输入明文:n"); scanf("%s",a); for(i=0;ai!='0'i+) bi=ai-64; printf("输入一位密钥n"); scanf("%d",&k); printf("n"); for(i=0;bi!='0'i+) mi=(bi+k)%26+64; pr
3、intf("%s",&m); return 0;解密:int decode() printf("输入密文:n");scanf("%s",a); for(i=0;ai!='0'i+) bi=ai-64; printf("输入一位密钥n"); scanf("%d",&k); printf("n"); for(i=0;bi!='0'i+) ni=(bi-k)%26+64; printf("%s",n); retur
4、n 0;4、 程序流程图:5、 测试结果截图:加密:解密:B:1、 实验原理:不改变明文字符,但是把字符在明文中的排列顺序改变,来实现明文信息的加密。置换密码也被称为换位密码。本次实验使用的是矩阵换位法,是将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵恢复正常顺序,从而恢复明文。2、算法设计:通过选择加密或解密,使用置换矩阵顺序和恢复矩阵顺序的两个函数,分别在主函数中进行调用来实现置换密码的加密解密实现;3、函数接口:加密:int j
5、iami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf("输入明文:n");scanf("%s", ptext);i = 0;while (ptexti != 0)text_len+;i+;printf("输入密钥:n");scanf("%s", k
6、ey);i = 0;while (keyi != 0)key_len+;i+;for (i = 0; i<key_len; i+)numberi = 0;for (j = 0; j<key_len; j+)if (keyj<keyi)numberi+;for (i = 0; i<key_len; i+)for (j = i + 1; j<key_len; j+)if (keyj = keyi)numberj+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len
7、 + 1;for (i = 0; i<key_len; i+)for (j = 0; j<row; j+)ctexti*row + j = ptextnumberi + key_len*j;for (i = 0; i<key_len; i+)for (j = 0; j<row; j+)printf("%c", ctexti*row + j);return 0;解密:int jiemi()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0; char key1LENGTH = 0 ;char pte
8、xt1LENGTH * 10 = 0 ;char ctext1LENGTH * 10 = 0 ;char number1LENGTH = 0 ;printf("输入密文:n");scanf("%s", ctext1);while (ctext1i != 0)text_len+;i+;printf("输入密钥");scanf("%s", key1);i = 0;while (key1i != 0)key_len+;i+;for (i = 0; i<key_len; i+)int j = 0;number1i =
9、 0;for (j = 0; j<key_len; j+)if (key1j<key1i)number1i+;for (i = 0; i<key_len; i+)int j = 0;for (j = i + 1; j<key_len; j+)if (key1j = key1i)number1j+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; i<key_len; i+)for (j = 0; j<row; j+)pt
10、ext1number1i + key_len*j = ctext1i*row + j;for (i = 0; i<key_len; i+)for (j = 0; j<row; j+)printf("%c", ptext1i*row + j);return 0;4、 程序流程图:5、 测试结果截图:三、实验总结: 1、在进行替代密码实现的时候,总是出现程序终止,然后一步步调试,还用了断点测试,最后发现是循环的终止条件设置错误,最后经过了改正,程序能够从正常运行; 2、在进行置换实验的时候,设置的数组总是出错,数量不足或排序错误,感觉对这一方面的代码实现有很大的不足
11、,置换数组方面忘记了很多概念,应该进行转么的复习; 3、经过这一次的实验,对古典密码中的替代密码和置换密码有了一定的了解,感觉对于密码学有了很浓厚的兴趣,想要进一步了解一些密码的算法和实现的方法; 4、感觉一个假期没有编程,忘记了很多语句和各种基本知识,感觉应该再系统地复习一遍,再多加练习。四、问题回答:替代密码:分析密文中的字母频率后将可以对照破解;可能严重偏离标准频率,加入文章少于100个字母,那么对它的解密就会比较困难。 改进:在单一恺撒密码的基础上扩展出多表密码,称为"维吉尼亚"密码。引入了"密钥"的概念,即根据密钥来决定用哪一行的密表来进行替换
12、,可以对抗字频统计。五、实验代码:A、 替代密码: #include <stdio.h> #include <conio.h> #include<string.h> int k,i=0;char a100;char b100,m100,n100;int encrypt() printf("输入明文:n"); scanf("%s",a); for(i=0;ai!='0'i+) bi=ai-64; printf("输入一位密钥n"); scanf("%d",&
13、k); printf("n"); for(i=0;bi!='0'i+) mi=(bi+k)%26+64; printf("%s",&m); return 0;int decode() printf("输入密文:n");scanf("%s",a); for(i=0;ai!='0'i+) bi=ai-64; printf("输入一位密钥n"); scanf("%d",&k); printf("n"); for(i
14、=0;bi!='0'i+) ni=(bi-k)%26+64; printf("%s",n); return 0;int main()int c;printf("加密选择1,解密选择2 n");scanf("%d",&c);if(c=1)encrypt(); if(c=2)decode();return 0;B、置换密码:#include <stdio.h>#include <string.h>#define LENGTH 26int jiami()int i = 0, j = 0, ke
15、y_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf("输入明文:n");scanf("%s", ptext);i = 0;while (ptexti != 0)text_len+;i+;printf("输入密钥:n");scanf("%s", key);i = 0;while (keyi != 0
16、)key_len+;i+;for (i = 0; i<key_len; i+)numberi = 0;for (j = 0; j<key_len; j+)if (keyj<keyi)numberi+;for (i = 0; i<key_len; i+)for (j = i + 1; j<key_len; j+)if (keyj = keyi)numberj+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; i<key_
17、len; i+)for (j = 0; j<row; j+)ctexti*row + j = ptextnumberi + key_len*j;for (i = 0; i<key_len; i+)for (j = 0; j<row; j+)printf("%c", ctexti*row + j);return 0;int jiemi()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0; char key1LENGTH = 0 ;char ptext1LENGTH * 10 = 0 ;char ctex
18、t1LENGTH * 10 = 0 ;char number1LENGTH = 0 ;printf("输入密文:n");scanf("%s", ctext1);while (ctext1i != 0)text_len+;i+;printf("输入密钥");scanf("%s", key1);i = 0;while (key1i != 0)key_len+;i+;for (i = 0; i<key_len; i+)int j = 0;number1i = 0;for (j = 0; j<key_len; j+)if (key1j<key1i)number1i+;for (i = 0; i<key_len; i+)int j = 0;for (j = i + 1; j<key_len; j+)if (key1j = key1i)number1j+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; i<key_len; i+)for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人教版小学一年级数学上册看图列式计算专项卷含答案
- 2026年人教版小学四年级数学下册鸡兔同笼问题解法卷含答案
- 深度解析(2026)《GBT 4214.10-2021家用和类似用途电器噪声测试方法 确定和检验噪声明示值的程序》
- 2026年人教版小学六年级语文上册小升初标点运用卷含答案
- 深度解析(2026)《GBT 3883.16-2008手持式电动工具的安全 第二部分 钉钉机的专用要求》
- 深度解析(2026)《GBT 3464.1-2007机用和手用丝锥 第1部分:通 用柄机用和手用丝锥》
- 深度解析(2026)《GBT 3253.2-2008锑及三氧化二锑化学分析方法 铁量的测定 邻二氮杂菲分光光度法》
- 《JBT 10716-2020柴油机 直列式喷油泵和共轨系统用高压供油泵平底托架 安装尺寸》专题研究报告
- 《JBT 10549-2006 SF6气体密度继电器和密度表 通 用技术条件》专题研究报告
- 《JBT 10672-2018废钢破碎生产线》专题研究报告
- 《网上观看大熊猫》名师课件
- GA/T 2133.2-2024便携式微型计算机移动警务终端第2部分:安全监控组件技术规范
- (正式版)HGT 3655-2024 紫外光(UV)固化木器涂料
- 湘教版高中数学必修二知识点清单
- 2024年山东出版集团有限公司招聘笔试参考题库含答案解析
- 2023年初级会计职称《初级会计实务》真题
- (中职)电子技术基础与技能教ppt教学课件汇总完整版电子教案
- 氢气管道施工技术管理及质量控制
- 光拍频法测量光速
- 诊断学恶心呕吐呕血便血腹痛PPT
- 原厂操作IBM v5000,v7000换盘
评论
0/150
提交评论