古典密码课程设计_第1页
古典密码课程设计_第2页
古典密码课程设计_第3页
古典密码课程设计_第4页
古典密码课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华北科技学院课程设计目录论文摘要2设计任务及要求31、设计任务32、设计要求3第一章 凯撒密码4一、凯撒密码的原理4二、凯撒密码的改进及评价4三、凯撒密码的流程图及程序6第二章 仿射密码8一、仿射密码的原理8二、仿射密码的流程图及程序9第三章 栅栏置换密码技术14一、栅栏置换密码技术的原理14二、栅栏置换密码技术的流程图及程序15心得体会20参考文献21论文摘要密码技术已被广泛应用到了信息技术的许多领域,是实现信息系统的关键技术之一,在保障网络信息安全的应用中具有重要地位。密码技术的研究内容除传统的信息机密性保护技术外,还包括数字签名、报文和身份鉴别、密钥管理、安全协议等与信息安全密切相关的重

2、要内容。密码学是信息安全、通信工程、计算机科学、信息管理、电子商务等学科的专业基础课程及重要的教学内容。保护数据的方法属于密码学范畴。密码学是结合数学、计算机科学、电子与通信等诸多科学于一身的交叉学科。它以研究数学保密为目的,对存储或者传输的信息采取秘密的交换以防止第三者对信息的窃取。密码学包括两个领域:密码编码学和密码分析学。密码系统按将明文转换为密文的操作类型分为:替代密码和置换密码。替代是古典密码中用到的最基本的处理技巧之一,它在现代密码学中也得到广泛的应用。所谓替代就是将明文中的一个字母由其他字母、数字或符号替代的一种方法。置换密码又称为换位密码,这种密码通过改变明文消息个元素的相对位

3、置,但明文消息元素本身的取值或内容形式不变,而替代密码中,可以认为是保持明文的符号顺序,但是将它们用其他符号代替。本论文将介绍了两种替代密码:凯撒密码和仿射密码,一种置换密码:栅栏置换密码技术。设计任务及要求1、设计任务 设计能够利用古典密码算法进行加/解密的c语言程序2、设计要求 (1)复习密码学中有关古典密码体制的相关知识 (2)利用c语言设计可执行程序 (3)在设计过程中,要求设计至少两种的古典密码算法,并且必须包括仿射密码的c语言实现 (4)设计报告中应包括设计原理、程序设计详细说明书以及调试结果第一章 凯撒密码一、凯撒密码的原理最早最经典的替换法就是凯撒加密法,消息中每个字母换成它后

4、面3个字母的字母,即密钥=3,并进行循环替换,即最后的3个字母反过来用最前面的字母,基本替换对照表见表1-1例如,明文attack at five变成密文 dwwdfn dw dilyh表1-1 凯撒加密对照表明文abcdefghijklm密文defghijklmnop明文nopqrstuvwxyz密文qrstuvwxyzabc对加密后的密文进行解密时则用的逆置换进行替代。凯撒密码的算法评价:很容易破解,数字3就是密钥。二、凯撒密码的改进及评价算法改进1:在凯撒加密法中,密文字母与明文字母不一定相隔3个字母,而是可以相隔多个字母,会更复杂一些,也就更难破译。英语有26个字母,字母a可以换成字母

5、表中的 其他字母(b-z)。因此替换相隔在1-25之间,共有25中替换的可能性。算法改进1的评价:该算法的密钥虽然不是固定的数字3,而是1-25之间变换的数字,但在各种变换是有限的,一种针对有限可能性加密的攻击方法是强力攻击法,它实际上是采用的穷举法,即通过所有置换与组合攻击密文消息。用强力攻击方法可以破解上述改进的凯撒加密法,密码分析者只要知道下面3点就可以采用强力攻击的方法破解改进的凯撒加密法。(1)密文是用替换技术从明文得到的。(2)只有25中可能性。(3)明文的语言是英语。算法改进2:在凯撒加密法中,假设某个明文消息的所有字母不是采用相同间隔的替换模式,而是采用随机替换,每个a可以换成

6、b-z的任意字母,b也可以换成a或c-z得任意字母注意:不要重复替换,例如:a既对应c有对应h,因为这样解密无法进行。改进算法2的评价:数学上,现在可以使用26个字母的任何置换与组合,从而得到252423222=25!种可能的替换方法,这么多的组合,即使利用最先进的计算机也需要许多年才能破解,这样就解决了强力攻击。但这种一对一的替换方法有一个很大的弊端,从前面的把明文attack at five加密成密文dwwdfn dw dilyh的例子可以看出,明文中得字母频率统计规律与密文中的统计规律一致,如在明文中a和t个出现3次,在明文中对应得d和w也个出现3次,这种规律给密码分析者破解密码带来了可

7、乘之机,这种攻击方法叫做字母频率统计法,密码分析者可以根据以往文章中字词出现的频率来进行破解,因此这种改进的加密方法可以用英文字母的频率来破解,此方法对拥有大量密文更有效,因为这样统计的数据更容易得出真实结果,事先大量统计的规律可以事先完成,目前对英文字母频率出现的规律统计为:e出现的概率最大,其次是t、r等,j、k出现的概率最小。除了单字母的频率统计外,密码分析员还寻找多字母th、to、the等常见的重复模式进行破译。例如,密码分析员可以密文中寻找3个字母出现最多的模式,试着将其换成the。三、凯撒密码的流程图及程序凯撒密码的加密流程图如图1-1图1-1 凯撒加密流程图凯撒密码的加解密c语言

8、程序:#include void main() char s100; int i; printf(请输入明文: ); gets(s); for(i=0;si!=0;i+) if(si=a)&(si=a)&(si=d)&(si=d)&(si=z) si=si-3; else si=si+23; printf(请输出明文: ); puts(s); 运行结果如下:图1-2第二章 仿射密码一、仿射密码的原理仿射密码是一种单表替代密码,是一种线性变换,仿射密码的明文空间和密文空间与凯撒密码相同,但密钥空间为k=|,,gcd(,26)=1,对任意的m,cc,k=(,)k,定义加密变换为c=m+相应解密变换

9、为:m=其中,=1mod26。例:设明文消息为china,密钥k=,试用仿射密码对其进行加密,然后在进行解密。解:利用扩展的欧几里得算法可计算出=3。加密变换为:=m+=9m+解密变换为:=3明文消息对应的数字依次为2,7,8,13,0,用仿射密码对明文进行加密如下:=9+mod26=c密文消息为:unwpc。解密过程如下:=3-mod26=m即恢复明文消息为china。仿射密码要求gcd(,26)=1,即与26互素,否则就会有多个明文字母对应一个密文字母的情况。由于与26互素的整数有12个:1,3,5,7,9,11,15,17,19,21,23,25,因此仿射密码的密钥空间大小为|k|=12

10、26=312。二、仿射密码的流程图及程序对仿射密码的加密流程图如图2-1:其中p、q为密钥。图2-1 仿射密码流程图仿射密码的加解密c语言程序:#include#includevoid c(char str1);void m(char str2);int gcd(int a, int b);int ni(int a, int b);void main() int choice; char str1100,str2100; while(true) printf(请选择:加密(1),解密(2),退出(0)n); scanf(%d,&choice); if(choice=1) printf(请输入要

11、加密的数据:n); scanf(%s,str1); c(str1); else if(choice=2) printf(请输入要解密的数据:n); scanf(%s,str2); m(str2); else break; void c(char str1) /加密 int p,q,i=0; printf(请输入加密密钥p(与26互素),q:); scanf(%d%d,&p,&q); while(str1i!=0) str1i=(p*(str1i-97)+q)%26+97; i+; printf(加密后的数据为:); puts(str1);void m(char str2) /解密 int p,

12、q,i=0,r; printf(请输入解密密钥p(与26互素),q:); scanf(%d%d,&p,&q);r=ni(p,26); while(str2i!=0) str2i=r*(str2i-97-q)%26+97; i+; printf(解密后的数据为:); puts(str2);int gcd(int a, int b) /*辗转相除法求a,b最大公因数*/ int k = 0; do k = a%b; a = b; b = k; while(k!=0); return a; int ni(int a, int b) /*求a相对于b的逆*/ int i = 0; while(a*(+

13、i)%b!=1); return i; 运行结果:图2-2第三章 栅栏置换密码技术一、栅栏置换密码技术的原理栅栏置换加密技术属于置换密码。栅栏加密过程是把要加密的消息按照锯齿状一上一下地写出来。因为加密过程的几何形状类似于栅栏的上半部分,因此称为栅栏加密。明文消息attack at five 的加密过程要把被加密的消息按照锯齿状一上一下地写出来:a t c a f v t a k t i e然后一行一行地产生密文,得到atcafvtaktie解密过程是,先写第1行,再写第2行,每行字母的个数的决定是按照下面的原则进行的:字母总数是偶数时第1行和第2行各一半,总数是奇数时第1行多一个,然后按加密

14、对角线序列读出。算法评价:算法的优点是算法简单,性能好;缺点是很容易破解,就很容易分析出明文。因此一般很少单独使用,而是配合其他方法进行加密。二、栅栏置换密码技术的流程图及程序栅栏置换密码技术流程图如图3-1、3-2:图3-1栅栏置换加密流程 图3-2栅栏置换解密流程栅栏置换密码技术c语言程序:#include#includevoid main()int i,m=0,n=0;char ch100,ch1100,ch2100; printf(请输入明文:);gets(ch);for(i=0;chi!=0;i+)if(i%2=0)ch1i/2=chi;elsech2i/2=chi;ch1i/2=0

15、;ch2i/2=0;printf(输出密文:);for(i=0;ch1i!=0;i+)printf(%c,ch1i);ch1i=0; for(i=0;ch2i!=0;i+) printf(%c,ch2i); ch2i=0;printf(n); printf(请输入密文:);gets(ch);for(i=0;chi!=0;i+)if(i%2=0)ch1n=chi;n+;elsech2m=chi;m+;ch1n=0;ch2m=0;printf(输出明文:);for(n=0;ch1n!=0;n+)printf(%c,ch1n);ch1n=0; for(m=0;ch2m!=0;m+) printf(%

16、c,ch2m); ch2m=0;printf(n);运行结果:图3-3心得体会通过三周的课程设计,自己的收获也很多。不仅把之前所学的加密的的知识巩固了,同时也巩固了自己的c语言相关的知,通过和同学的交流和讨论以及向老师的请教,把之前很多没有弄懂的知识学会了,让我比较系统的掌握了古典密码的原理与程序实现。在做课设的过程中,不仅要用到课本的知识,还要到网上查阅相关的知识,这让我大大扩充自己的视野,培养了解决问题的能力。经常运用c语言编程,大大提高了自己的编程能力和动手能力。其实作为密码学的基础,各类型的古典密码的原理是很简单的,难的就是你要怎样把那些看起来简单的原理用计算机程序语言进行实现,所以最重要的就是要动手,在实际的操作中会遇到很多的问题,这是就需要和同学互相商讨,或者是向老师请教,集思广益,想方设法的才能更好的把自己的思想应用到程序中去,这个过程让我真实的感受到编程给我带来的乐趣,同时所锻炼的动手能力也为我们以后的工作打下了坚实的基础。在这次课设中也看到了自己的不足之处。对于c语言的很多知识都忘了,一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论