资源描述:
《实验2-移位密码分析实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验2—移位密码分析实验一、实验内容通过编程实现使用频度分析法破解凯撒密码的程序。并通过下而两段密文解密验证。已知,拦截到下列两段密文,使用的是移位密码,利用频度攻击分别找出其明文:1、XLILSYWTMWRSAJSVWEPIJSVJSYVQMPPMSRHSPPEVWXMWASVXLQSVILYVVCFIJSVIXLTWIPPIVVIGIMZIWQSVISJJIVW2、XULTPAAJCXITLTLXAARPJHTIWTGXKTGHIDHIPXCIWTVGTPILPITGHLXIWIWTXGQADDS二、实验要求1、写出凯
2、撒密码的频度分析原理一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,出现较高频率的两个字符是’’(空格)和’e',而且它们的ASCII码分别是32和101,差值是69。既然凯撒密码利用的是单表替换的一种简单加密算法,所以,我们的主角,’’和'e',在解密后,依然会保持相同的ASCII码差值,69。
3、cl-c2
4、二
5、'e'一’,
6、=1101-321=69
7、ml-m21=
8、((cl+k)mod256)-((c2+k)mod256)
9、=
10、cl-c2
11、=
12、'e'-'
13、=69现在可以得到破解凯撒密码的原理了,我们统
14、计一片经过凯撒加密的密文字符信息,在出现频率较高的字符里面寻找差值是69的2个字符,这两个必定是’’和'e'字符的加密字符,计算偏移量(既密钥key),通过解密运算,还原出明文。2、程序设计流程说明,提交源代码及详细注禅开始输入要打开的文件名计算文件中各个字母出现的次数输入出现次数最多的字母计算出密钥解密出明文结束源代码:#include#include#includeintcount[27];chars[100];intmain(){inti,n,m,1,k;FI
15、LE*fp;chard;charfilenanie[100];printfCig输入要打开的文件名:〃);//输入要打开的文件名gets(filename);ip=fopen(filename,r;;if((fp=fopen(filename,〃r"))==NUI」J//打开文件,并判断是否冇打开错误printf(z/打开文件/s出现错课rT,fRename);elseprintff成功打开文件〃);while(fgets(s,100,fp))//计算文件中每个英文字母出现的次数{for(i=0;s[i];i++
16、){if(s[订〈'A'
17、
18、s[i]>'zT
19、(s[i]>'Z'&&s[i]<'a'))count[26]++;elseif(s[i]<‘a')countA']++;elsecount]s[i]-'a'];}}for(i=0;i<26;i++){printfC%cor%c:%d次",'A'+i,'a'+i,count[i]);}printf("其它字符:%d次rT,count[26]);printf(z,inputthenumber,z);//输入出现次数最多的字母scanf("%c:&d);k二(int)(d-
20、'e‘);〃计算出密钥printf(z,thekeyis:%d",k);printf(,zWhentheciphertextis'%s',Thepasswordprogramis...::",s);m=strlen(s);for(i=0;i64&&n<91){n=(n-65-k)%26;if(n<0)n=26+n;l=(char)(n+97);printf("%c:1);}s[i]= ';return0;3、用截图描述实验过程和结果u
21、oru!orwXorXYoryZorz13次31恢它字符:inputthenunber■1thekeyis:4Whentheciphertextis^XLILSVWIMWRSAJSUIJEPIJSUJSYUQHPPHSRHSPPEUWMXMWASUXLQSUILYUUCFIJSUIXLIWIPPIUUIGIMZIWQSUISJJIUir,Thepassv/ordprogramis...::thehouseisnowforsalefor£ournilliondollarsitisworthnorehurrybeforeth
22、ese1lerreceiu^snoreoffers请按任意键继续■••请输入要打开的文件名:d:\file2.txt成功打开文件ABkJHIorororororororororororororororororororororor■1■J1mnoPRsTuUorLIUorUWorWXorXYoryZor