资源描述:
《实验3-移位密码分析实验.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验3-移位密码分析实验班级:信息安全一、实验原理一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,出现较高频率的两个字符是''(空格)和'e',而且它们的ASCII码分别是32和101,差值是69。既然凯撒密码利用的是单表替换的一种简单加密算法,所以,我们的主角,''和'e',在解密后,依然会保持相同的ASCII码差值,69。
2、c1-c2
3、=
4、'e'-''
5、=
6、101-32
7、=69
8、m1-m2
9、=
10、((c1+k)mod256)-((c2+k)mod256)
11、=
12、c1-c2
13、=
14、'e'-''
15、=69现在可以得到破解凯撒密码的原理了,我们统计一片经过凯撒加密的密文字符信息,在
16、出现频率较高的字符里面寻找差值是69的2个字符,这两个必定是''和'e'字符的加密字符,计算偏移量(既密钥key),通过解密运算,还原出明文。二、程序设计流程说明:移位密码算法破解输入密文字母统计分析出现频率最高的字母解密输出结果结束源代码:#includevoidanalyze(char*c);voiddecypher(char*c,char*hashmap,inta,intb,intd);voidcreateHash(char*c,inta,intb,intd);charalphabet[]="abcdefghijklmnopqrstuvwxyz,.!";intmai
17、n(){charch1[10000];charhash[29];printf("Inputparagragh:");gets(ch1);analyze(ch1);printf("Afterdecyphered:");createHash(hash,7,3,29);decypher(ch1,hash,7,3,29);printf("%s",ch1);return1;}voidanalyze(char*c)//统计字母出现{inta[26]={0};inti=0,j;while(c[i]!=' '){if(c[i]!='.'
18、
19、c[i]!='!'
20、
21、c[i]!=',')a
22、[c[i]-'a']++;printf("%dt",i++);}for(j=0;j<26;j++){printf("%c:%d",j+'a',a[j]);}}voiddecypher(char*c,char*hashmap,inta,intb,intd)//通过密文直接hash到明文,进行解密{inti=0;intchar_pos;//recordthecaractor'spositionwhile(c[i]!=' '){char_pos=c[i]-'a';//printf("char_pos:%d",char_pos);if(c[i]!=''){printf("%c",has
23、hmap[char_pos]);}else{printf("");}i++;}}voidcreateHash(char*c,inta,intb,intd)//由于f(p)是满足双射关系的,即两两对应,可以将明暗文对应关系放在Hash表中{inti;charencode[29];for(i=0;i<29;i++){encode[i]=alphabet[(a*i+b)%d];printf("%c",encode[i]);}for(i=0;i<29;i++){c[encode[i]-'a']=alphabet[i];}printf("%s",alphabet);}一、实验过程1.输入密文
24、2.统计字符,得出结果结果:密文xultpaajcxitltlxaarpjhtiwtgxktghidhipxciwtvgtpilpitghlxiwiwtxgqadds所对应的明文为ifweallunitewewillcausetheriverstostainthegreatwaterswiththeirblood