维吉尼亚密码学报告

维吉尼亚密码学报告

ID:37786871

大小:116.50 KB

页数:12页

时间:2019-05-31

维吉尼亚密码学报告_第1页
维吉尼亚密码学报告_第2页
维吉尼亚密码学报告_第3页
维吉尼亚密码学报告_第4页
维吉尼亚密码学报告_第5页
资源描述:

《维吉尼亚密码学报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言课程设计报告学院专业班级学号姓名课题指导教师_____________报告成绩______________日期:年月日12目录一、课程设计目的3二、课程设计原理3三、设计题目分析33.1题目背景33.2设计要求3四、课程设计内容34.1总体设计34.2详细设计(流程图)44.3小组分工4五、概要设计55.1主函数设计55.2本人部分6六、程序76.1源代码76.2算法调试过程中出现的问题及解决方法106.3主要程序运行10七、设计心得与总结11八、评阅意见1112一、课程设计目的维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用c语言编写和调试一个

2、简单的维吉尼亚密码实现及分析破译程序。通过本实验可以加深理解维吉尼亚密码及其分析破译。二、课程设计原理维吉尼亚使用一个词组作为密钥,密钥中每一个字母用来确定一个代替表,每一个密钥字母被用来加密一个明文字母,等所有密钥字母使用完后,密钥再循环使用。维吉尼亚是最著名的多表代替密码的例子。维基利亚密码加密函数为:f(Pi)=(Pi+Ki)mod26,f(Pi)表示密文字母在字母表中的位置,Pi表示明文字母在字母表中的位置,Ki表示密钥字母在字母表中的位置,i=1,2,……,n。三、设计题目分析3.1题目背景1858年法国密码学家维吉尼亚提出一种以移位替换为基础的周期

3、替换密码。这种密码是多表替换密码的一种。是一系列(两个以上)替换表依次对明文消息的字母进行替换的加密方法。维吉尼亚密码对同一条信息中的不同字母用不同的密码进行加密。比如这样,同样的E在一个位置可能被M所取代,而在另一个位置的E则有可能以K的面目出现。这样,就可以防止任何人利用频率分析法解密该条信息。3.2设计要求(1)设计一个函数实现维吉尼亚密码;(2)在已知明文及其对应密文的基础上,分析破译维吉尼亚密码,编程求解密钥;(3)要求有程序实现,有实验结果截图,有测试例子四、课程设计内容4.1总体设计(1)首先使用维吉尼亚方阵,它的基本方阵是26列26行。方阵的第

4、一行是a到z按正常顺序排列的字母表,第二行是第一行左移循环一位得到得,其他各行依次类推。12(2)加密时,按照密钥字的指示,决定采用哪一个单表。例如密钥字是bupt,加密时,明文的第一个字母用与附加列上字母b相对应的密码表进行加密,明文的第二个字母用与附加列的字母u相对应的密码表进行加密,依次类推。(3)令英文字母a,b,„,z对应于从0到25的整数。设明文是n个字母组成的字符串,即m=m1m2m3m4„mn密钥字周期性地延伸就给出了明文加密所需的工作密钥K=k1k2„kn,E(m)=C=c1c2„cn加密:Ci=mi+kimod26;解密:mi=ci-kim

5、od26,i=1,2,3……,n4.2详细设计(流程图)开始将字符串密钥转义为整型数组输入关键字解密加密判断输入密文输入明文解密letter-P_table[key]+96+26*a[n]加密f(Pi)=(Pi+Ki)mod26输出密文输出密文结束4.3小组分工于铭阳(组长):解密函数范晓喻:加密函数梁迪:密钥转义函数12刘昭阳:加密函数冯冬宿:主函数五、概要设计5.1主函数设计intmain(){charm[100];charc[100];charkey[100];intP_table[7];intmode;printf("请输入模式:1:加密2:解

6、密");scanf("%d",&mode);printf("请输入密钥,7位小写字母:");scanf("%s",key);if(!str2int(key,P_table,strlen(key))){printf("密钥不合法,程序结束");return0;}switch(mode){case(1):{printf("请输入明文:");scanf("%s",m);encrypt(m,c,P_table,strlen(m));printf("密文为:%s",c);break;}case(2):{printf("请输入密文:");sca

7、nf("%s",c);decrypt(c,m,P_table,strlen(c));printf("明文为:%s",m);break;12}default:printf("请输入正确的模式代码,程序结束");}return0;}5.2本人部分我负责内容为密钥转义函数/*****************************函数名:str2int作者:梁迪作用:将字符串秘钥转换为整型数组,排除不合法的密钥,合法时返回1,不合法返回0*****************************/intstr2int(char*key,int*P_table

8、,intlen_k){inti;if(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。