mis系统软件实验报告加密解密算法 .doc
《mis系统软件实验报告加密解密算法 .doc》由会员分享,可在线阅读,更多相关《mis系统软件实验报告加密解密算法 .doc(40页珍藏版)》请在三一办公上搜索。
1、学生学号 实验课成绩学 生 实 验 报 告 书实验课程名称MIS系统软件开课学院管理学院指导教师姓名江长斌学生姓名学生专业班级2011-2012学年第二学期实验项目名称加密解密算法实验成绩实 验 者专业班级组 别同 组 者无实验日期2012年03月07日第一部分:实验预习报告1、 实验目的、意义通过简单的加密解密算法的实现理解系统中加密解密的基本思想,熟练掌握使用C语言基本语句。2、 实验基本原理与方法单字母替换加密方法恺撒密码加密方法是把英文字母按字母表的顺序编号作为明文,将密钥定为m,加密算法为将明文加上密钥m,得到密码表,通过相反的过程由密文得到明文。单字母替换加密方法单表置换密码 由密
2、钥Key构造字符置换表,完成加密和解密过程。多字母替换加密方法维吉利亚密码假设明文m=m1 m2 m3 mn;密钥k=k1k2 k3 kn,对应密文c=c1 c2 c3 cn,密文为:ci=(mi+ki )mod 26 ,26个字母的序号依次为025,ci , mi ,ki是分别是密文明文密钥中第i个字母的序号。转换加密方法 通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。 或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。3、 主要仪器设备及耗材实验室提供计算机
3、和上网条件,C语言上机环境。4、 实验方案与技术路线(综合性、设计性实验)本实验设计路线如下图所示:第二部分:实验过程记录实验原始记录(包括实验数据记录,实验现象记录,实验过程发现的问题等)加密解密方法描述:1. 凯撒密码加密方法是把英文字母按字母表的顺序编号作为明文,将密钥定为m,加密算法为将明文加上密钥m,得到密码表,通过相反的过程由密文查询出明文。加密过程:首先输入密钥6,然后输入明文verygood,明文字母对应的数字值如下所示,则会产生的对应关系如下图所示。解密过程:首先输入密文bkxemuuj,输入密钥6,则可得到其对应的明文为verygood。2. 单表替换先选定一个单词,然后将
4、它排列在密码对照表(两行26列第一行存a到Z的字母,第二行存对照密码)下方,重复出现的字母以第一次出现的明文字母为准,后面以该单词中未出现的字母按顺序排列备齐,生成一个密码,然后可以用此密码进行加密或解密。加密过程:首先输入明文verygood,输入密钥pengia,则会产生的对应关系如下图所示。解密过程:首先输入密文virybmmj,输入密钥pengia,则可得到其对应的明文为verygood。 3、多字母替换 假设明文m=m1 m2 m3 mn;密钥k=k1k2 k3 kn;对应密文c=c1 c2 c3 cn密文为:ci=(mi+ki )mod 26 ,26个字母的序号依次为025,ci
5、, mi ,ki是分别是密文明文密钥中第i个字母的序号加密过程:首先输入明文verygood,输入密钥pengia,则会产生的对应关系如下图所示。解密过程:首先输入密文kieeoodh,输入密钥pengia,则可得到其对应的明文为verygood。4、置换算法属于转换加密法中的一种,也可以称作为轮转法,通过将明文每m个字符一组按顺序分成若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。加密过程:输入明文verygood输入密钥6后,将形成如下排列:v e r y g oo d 由此可得其密文为:voedrygo。 解密过程:输入密文voedrygo,输入密钥6,即可反过来解密得到明文
6、verygood。第三部分 结果与讨论(可加页)实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)程序设计类实验:包括原程序、输入数据、运行结果、实验过程发现的问题及解决方法等;分析与设计、软件工程类实验:编制分析与设计报告,要求用标准的绘图工具绘制文档中的图表。系统实施部分要求记录核心处理的方法、技巧或程序段;其它实验:记录实验输入数据、处理模型、输出数据及结果分析一、实验数据记录和实验现象记录截图如下:(一)选用凯撒算法加密来测试1、 点击组建,选择开始调试,选择go后将进入界面2、 选择凯撒算法,输入13、 选择加密,输入1.4、 输入密钥6 5、输入加密数据 v
7、erygood6、打开04090917.txt查看文件内容为: (二)选用单表替换加密来测试1、第一步同上、第二步选择2、第三步同上、第四步输入密钥pengia、第五步输入verygood,得到:(三)选用多字母替换加密来测试1、第一步同上、第二步选择3、第三步同上、第四步输入密钥pengia、第五步输入verygood,得到:(四)选用置换算法加密来测试1、第一步同上、第二步选择4、第三步同上、第四步输入密钥6、第五步输入verygood,得到:(五)选用凯撒算法解密来验证1、第一步同上、第二步选择1、第三步选择2、第四步输入密钥6、第五步输入bkxemuuj,得到明文为verygood与前
8、面的测试相对应:(6)其他算法的解密验证就不在这一一列举。二、实验过程中的结果与感受 总体上说还是比较顺利的,在理解了每一种加密解密算法的规则后,算法就不那么容易错了,实验的大体框架很明确,按照需求选择算法来选择加密或者解密,通过主函数来调用各个算法,而对于算法可能还存在一些不足人意的地方,还待发掘和完善。三、实验源代码#include #include #include kaiser(int mode)/凯撒算法加密char str1100,str2100,svKey3;int i,key;printf(nnnn这里是凯撒算法nnn);/输入并检验key合法性printf(请输入一个密钥ke
9、y(1-25之间的整数)n);scanf(%d,&key);while(key25|key1)printf(非法输入,请重新输入一个1-25之间的密钥(整数)n);scanf(%d,&key);fflush(stdin);switch (mode)case 1:printf(请输入需要加密的数据(本版本暂时仅支持字母加密)n);gets(str1);for(i=0;istrlen(str1);i+)if(A=str1i&str1i10)svKeyi+=key/10+48;svKeyi+=key%10+48;svKeyi=0;show(str1,str2,svKey);fileWrite(1,s
10、tr1,str2,svKey);break;case 2:printf(nnn请输入需要解密的数据(本版本暂时仅支持字母解密)n);gets(str1);for(i=0;istrlen(str1);i+)if(A=str1i&str1i10)svKeyi+=key/10+48;svKeyi+=key%10+48;svKeyi=0;show(str2,str1,svKey);fileWrite(1,str2,str1,svKey);break;/此函数检验密钥中是否有重复字母int check(char k)int i,j;for(i=0;istrlen(k);i+)if(kiz) return
11、 1;for(j=i+1;jstrlen(k);j+)if(ki=kj) return 1;return 0;single(int mode)int i,num26,j=0,sign;char letter127=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0;char letter227,str1100,str2100,key26;printf(nnnn这里是单表替换法nnn);printf(请输入字母密钥key(建议在5-10个字母之间)n);gets(key);/大小写自动转换for(i=0;i=A&keyi=Z) keyi=k
12、eyi+32;/确保字母唯一性函数sign=check(key);while(sign!=0)printf(非法输入,key中不可存在重复字母以及非字母字符,请重新输入一个keyn);gets(key);for(i=0;i=A&keyi=Z) keyi=keyi+32;/printf(%cn,keyi);/确保字母唯一性函数sign=check(key);/这部分建立字母对应转换数组for(i=0;istrlen(key);i+)letter2i=keyi;letter1keyi-a=_;for(i=0;i26;i+)if(letter1i!=_) letter2strlen(key)+j+=
13、letter1i;letter226=0;/将letter1中的数据恢复for(i=0;i26;i+)letter1i=i+a;switch (mode)case 1:printf(请输入需要进行加密的数据(本版本暂时仅支持字母加密)n);gets(str1);for(i=0;istrlen(str1);i+)if(A=str1i&str1i=Z) str2i=letter2str1i-A-32;else str2i=letter2str1i-a;str2i=0;puts(key);puts(str2);show(str1,str2,key);fileWrite(2,str1,str2,key
14、);break;case 2:printf(请输入需要解密的数据(本版本仅支持字母加密)n);gets(str1);for(i=0;istrlen(str1);i+)for(j=0;j26;j+)if(str1i=letter2j|str1i=(letter2j-32) break;if(A=str1i&str1i=Z) str2i=letter1j-32;else str2i=letter1j;str2i=0;show(str2,str1,key);fileWrite(2,str2,str1,key);break;/解密words(int mode)char key26,str1100,st
15、r2100;char letter127=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0;int i,sign;printf(nnnn这里是多字母替换法nnn);printf(请输入字母密钥key(建议在5-10个字母之间)n);gets(key);/大小写自动转换for(i=0;i=A&keyi=Z) keyi=keyi+32;/确保字母唯一性函数sign=check(key);while(sign!=0)printf(非法输入,key中不可存在重复字母以及非字母字符,请重新输入一个keyn);gets(key);for(i=0;i
16、=A&keyi=Z) keyi=keyi+32;/printf(%cn,keyi);/确保字母唯一性函数sign=check(key);switch (mode)case 1:printf(请输入需要进行加密的数据(本版本暂时仅支持字母加密)n);gets(str1);for(i=0;istrlen(str1);i+)if(A=str1i&str1i=Z) str2i=(keyi%strlen(key)-A)%26+(str1i-A)%26)%26+A;else str2i=(keyi%strlen(key)-a)%26+(str1i-a)%26)%26+a;str2i=0;show(str1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mis系统软件实验报告加密解密算法 mis 系统软件 实验 报告 加密 解密 算法
链接地址:https://www.31ppt.com/p-2396457.html