实验2移位密码分析实验Word文档格式.doc
- 文档编号:13167264
- 上传时间:2022-10-07
- 格式:DOC
- 页数:5
- 大小:63.50KB
实验2移位密码分析实验Word文档格式.doc
《实验2移位密码分析实验Word文档格式.doc》由会员分享,可在线阅读,更多相关《实验2移位密码分析实验Word文档格式.doc(5页珍藏版)》请在冰豆网上搜索。
既然凯撒密码利用的是单表替换的一种简单加密算法,所以,我们的主角,'
和'
,在解密后,依然会保持相同的ASCII码差值,69。
|c1-c2|=|'
-'
|=|101-32|=69
|m1-m2|=|((c1+k)mod256)-((c2+k)mod256)|=|c1-c2|=|'
|=69
现在可以得到破解凯撒密码的原理了,我们统计一片经过凯撒加密的密文字符信息,在出现频率较高的字符里面寻找差值是69的2个字符,这两个必定是'
字符的加密字符,计算偏移量(既密钥key),通过解密运算,还原出明文。
2、程序设计流程说明,提交源代码及详细注释
开始
输入要打开的文件名
计算文件中各个字母出现的次数
输入出现次数最多的字母
计算出密钥
解密出明文
结束
源代码:
#include<
stdio.h>
#include<
stdlib.h>
string.h>
intcount[27];
chars[100];
intmain()
{
inti,n,m,l,k;
FILE*fp;
chard;
charfilename[100];
printf("
请输入要打开的文件名:
\n"
);
//输入要打开的文件名
gets(filename);
fp=fopen("
filename"
"
r"
if((fp=fopen(filename,"
))==NULL)//打开文件,并判断是否有打开错误
printf("
打开文件%s出现错误\n"
filename);
else
成功打开文件\n"
while(fgets(s,100,fp))//计算文件中每个英文字母出现的次数
{
for(i=0;
s[i];
i++)
{
if(s[i]<
'
A'
||s[i]>
z'
||(s[i]>
Z'
&
s[i]<
a'
))
count[26]++;
elseif(s[i]<
)
count[s[i]-'
]++;
else
];
}
}
for(i=0;
i<
26;
%cor%c:
%d次\n"
'
+i,'
+i,count[i]);
其它字符:
%d次\n"
count[26]);
printf("
inputthenumber\n"
//输入出现次数最多的字母
scanf("
%c"
&
d);
k=(int)(d-'
//计算出密钥
thekeyis:
%d\n"
k);
Whentheciphertextis'
%s'
\nThepasswordprogramis...:
:
\n\n"
s);
m=strlen(s);
for(i=0;
m;
i++)/*进行解密*/
n=(int)(s[i]);
if(n>
64&
n<
91)
{
n=(n-65-k)%26;
if(n<
0)
n=26+n;
l=(char)(n+97);
printf("
l);
}
}
s[i]='
\0'
;
return0;
3、用截图描述实验过程和结果
4、提示:
可将密文保存为文件,对该密文文件进行破解
可假设该文件中只有26个英文字母;
或者考虑文件里包含标准ASCII码表中的128个任意字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 移位 密码 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)