文档介绍:实验2移位密码分析实验
实验2移位密码分析实验
实验2移位密码分析实验
实验2-移位密码分析实验
实验内容
通过编程实现使用频度分析法破解凯撒密码的程序。并通过下面两段密文解密验证。
已知,拦截到下列两段密文,使用的是移位密码,利用频度攻击分别找出其明文:
XLILSYWIMWRSAJSVWEPIJSVJSYVQMPPMSRHSPPEVWMXMWASVXLQSVILYVVCFIJSVIXLIWIPPIVVIGIMZIWQSVISJJIVW
XULTPAAJCXITLTLXAARPJHTIWTGXKTGHIDHIPXCIWTVGTPILPITGHLXIWIWTXGQADDS
ﻩ
实验要求
写出凯撒密码的频度分析原理
一篇包含字符的英文文章,其各ASCII码字符出现,都有一定的频率,出现较高频率的两个字符是' ' (空格) 和 ’e',而且它们的ASCII码分别是32和101,差值是69。既然凯撒密码利用的是单表替换的一种简单加密算法,所以,我们的主角, ' ' 和'e' ,在解密后,依然会保持相同的ASCII码差值,69。
|c1 - c2| = |’e' - ’ ’| = |101 - 32| = 69
|m1 — m2| = | ((c1 + k) mod 256)—((c2 + k) mod 256)| = |c1 - c2| = |'e' - ' '| = 69
现在可以得到破解凯撒密码的原理了,我们统计一片经过凯撒加密的密文字符信息,在出现频率较高的字符里面寻找差值是69的2个字符,这两个必定是 ' ' 和'e’ 字符的加密字符,计算偏移量(既密钥key),通过解密运算,还原出明文。
程序设计流程说明,提交源代码及详细注释
实验2移位密码分析实验
实验2移位密码分析实验
实验2移位密码分析实验
开始
输入要打开的文件名
计算文件中各个字母出现的次数
输入出现次数最多的字母
计算出密钥
解密出明文
结束
源代码:
#include<〉
#include〈>
#include〈〉
int count[27];
char s[100];
int main()
{
int i,n,m,l,k;
ﻩFILE *fp;
char d;
ﻩchar [100];
printf("请输入要打开的文件名:\n"); //输入要打开的文件名
gets();
fp=fopen("”,”r”);
实验2移位密码分析实验
实验2移位密码分析实验
实验2移位密码分析实验
if((fp=fopen(,"r”))==NULL)//打开文件,并判断是否有打开错误
ﻩ printf("打开文件%s出现错误\n",);
else
ﻩprintf("成功打开文件\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'))
ﻩ co