维吉尼亚实验报告

2020-05-03 17:46

湖北工业大学 计算机学院

《应用密码学》课程实验报告

实验名称 姓 名 实验日期 一、实验目的 陈芳 维吉尼亚密码的实现及分析破译 系院专业 计算机 指导教师 班 级 09网1 实验序号 1 学 号 0910322135 成 绩 2012.3.12 阮鸥 维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及分析破译程序。通过本实验可以加深理解维吉尼亚密码及其分析破译。 二、实验内容与要求 (1)设计一个函数实现维吉尼亚密码; (2)在已知明文及其对应密文的基础上,分析破译维吉尼亚密码,编程求解密钥; (3)要求有程序实现,有实验结果截图,有测试例子。 (4)编程语言不限制,可以用tc2.0,vc6.0,.net或java 三、实验设备 地点: 科技楼 网络实验室602 硬件环境: Intel Pentium Processor 1.8G ,512M内存 ,windows 操作系统 软件环境:

四、实验步骤

(1)了解维吉尼亚加密原理

维吉尼亚使用一个词组作为密钥,密钥中每一个字母用来确定一个代替表,每一个密钥字母被用来加密一个明文字母,等所有密钥字母使用完后,密钥再循环使用。维吉尼亚是最著名的多表代替密码的例子。 例如用Vigenere加密“we are discovered” K=deceptive

步骤如下:

1.对照字母表写出“we are discovered”在字母表中的位置,以及明文“we are discovered”所对应的密钥字母在字母表中的位置,如下: w e a r e d i s 22 d 3 4 e 4 0 c 2 17 e 4 4 p 15 3 t 19 8 i 8 18 v 21 1

c 2 e 4 o 14 d 3 v 21 e 4 e 4 c 2 r 17 e 4 e 4 p 15 d 3 t 19 2.维基利亚密码加密函数为:f(Pi)=(Pi+Ki)mod26,f(Pi)表示密文字母在字母表中的位置,Pi表示

网络工程系·2009年编制

湖北工业大学 计算机学院

明文字母在字母表中的位置,Ki表示密钥字母在字母表中的位置,i=1,2,3,?,n.根据维基利亚密码加密函数写出求密文的过程及密文字母在字母表中的位置如下表: w 22 d 3 25 25 e 4 e 4 8 8 a 0 c 2 2 2 r 17 e 4 21 21 e 4 p 15 19 19 d 3 t 19 22 22 i 8 i 8 16 16 s 18 v 21 13 13 c 2 e 4 6 6 o 14 d 3 17 17 v 21 e 4 25 25 e 4 c 2 6 6 r 17 e 4 21 21 e 4 p 15 19 19 d 3 t 19 22 22 3.看表可知:明文“we are discovered”维基利亚加密后的密文字母在字母表中的位置为: 25 8 2 21 19 22 16 13 6 17 25 6 21 19 22 因此密文为:zicvtwqngrzgvtw (2)编写程序:

由维吉尼亚加密算法的原理可知,编写程序来实现维吉尼亚加解密主要是构造明文对应的数字表,在这里,可用将明文字母转化成其ACSII值,在这之前,要将所有明文字母和密钥字母首先转化为大写字母,再转化成其对应的ACSII码值,将明文和密钥字母所对应的ACSII码带入加密或者解密公式,算出密文,再将密文还原成大写字母输出。

源代码如下: #include #include #include #include void main() {

char p[100], key[100];

int lenp; //明文的长度 int lenk; //密文的长度 int i=0,j=0;

printf(\请输入明文:\\n\gets(p);

lenp = strlen(p);

strcpy(p, strupr(p)); //将字符串c,即明文全部换成大写 printf(\请输入密钥:\\n\gets(key);

lenk = strlen(key);

strcpy(key, strupr(key)); //将字符串key,即密钥全部换成大写 for(i=0; i

j = j%lenk;

if(p[i]>64&&p[i]<91) {

p[i] = (p[i]-65+key[j]-65)&+65; j++;

}

2

网络工程系·2009年编制

湖北工业大学 计算机学院

}

}

printf(\维吉尼亚加密后的密文为:\\n%s\\n\

五、实从步骤分析 1.测试数据及结果

测试数据:

明文we are discovered K=deceptive 运行结果如下:

从运行结果可知:与之前实验步骤1中算出的密文是一致的,可知运行结果是正确的。

2.实验中遇到的问题及解决办法

维吉尼亚密码算法比较简单,而且加密和解密都可以根据公式来直接求出,可是在写程序时还是有很多问题需要考虑的,比如:加密公式是数字运算,怎么将明文字母与数字一一对应起来(也就是如何确定Vigenere表)?

3.实验中尚未解决的问题及不足

尚未解决的问题:

该程序只是完成了已知明文和密钥求密文的过程,并未编程实现已知明文和密文求密钥的破解过程,主要原因是如果已知明文和密文用维吉尼亚算法来求密钥的话,求得的密钥并不是唯一的,也有想过将密钥一个个地穷举出来,但是考虑到编码量、以及代价太大、太繁琐,再加上本人编程能力有限,因此终究未成功。

六、实验成绩

3

网络工程系·2009年编制


维吉尼亚实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012到2016年民诉司考主观题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: