《Vigenere的编程实现》由会员分享,可在线阅读,更多相关《Vigenere的编程实现(7页珍藏版)》请在金锄头文库上搜索。
1、一、 实验目的与意义1、实验目的:通过编程实现 vigenere 加密,更加深入的了解其原理,掌握 vigenere 算法。2、实验意义:验证理论知识,更重要的是通过实验加强实验手段与实践技能,培养分析问题、解决问题、应用知识的能力和创新精神,全面提高综合素质。二、 实验环境操作系统:Windows XP调试软件名称:Microsoft Visual studio版本号:2005上机地点:综合楼 208三、 实验的预习内容1、预习内容:1、vigenere cipher 加密规则:1)找到一个关键字作为密钥;2)将关键字重复的写在明文上;3)根据 vigenere table 找出对应的密文2
2、、解密:1)根据 vigenere table 找到中对应的字母;2)再看密文字母对应的关键字字母;3)唯一的确定明文字母。3、关键的代码(如何让 3 个字母实现类似 vigenere table 的形式)#include stdafx.hint _tmain(int argc, _TCHAR* argv)char a3=a,b,c;char table33;for(int i=0;i输入关键字- 用户输入明文-进行加密得到密文;解密原理与加密基本相同。3、程序框图:四、 实验的步骤与调试方法1、实验步骤:(1) 建立 win32 console applicationg 工作空间,名为:vi
3、genere_20083612;(2) 新建 xuvi.cpp 源文件;(3) 按照实验思路编写源代码,完成之后进行编译、链接、执行;(4) 程序执行时按提示输入关键字、明文,验证输出密文,及解密之后输出明文是否正确。2、调试方法:打表时出现错误。经调整后发现是数组定义问题。五、 实验数据与实验结果开始输入关键字输入明文得到密文并将其输出得到解密过程中关键字输出解密后明文结束六、 实验用程序清单(要有注释)#include Stdio.h#include Conio.h#include string.h#include malloc.h#define MAX 100static int squ
4、are2727;char * vigenere(char key,char word);char * anti_vigenere(char key,char * en_word);int main(void)char keyMAX,wordMAX, *en_word;int i,j,k,m;/*初始化 vigenere 方阵*/for(i=1;i90)squareij=squareij-26;for(k=1;k=65&wordi=97&wordi=97&wordi=65&en_wordi=0)wordi=a+d;elsewordi=z+d+1;elsewordi=en_wordi;wordi=
5、0;return word;七、 思考题(必需回答)写明如下问题1. Vigenere 密码的原理是什么?答:替换。2. Vigenere 密码的主要缺陷有哪些?答:密钥长度 n 小于明文的长度,即相同的明文字符可能多次被相同的密钥字符加密,生成相同的密文字符。3. 对 Vigenere 密码的分析方法有哪几种?答:IC 重合指数 和 Kasiski 长度分析4. 对 Vigenere 密码的改进方法是什么?答:autokey copher八、 结束语通过本次试验我对 vigenere 加密算法有了更加全面深入的认识,以前的学习只是停留在理论层面,而这次试验课给了我实践的机会。通过实验很好的把
6、古典密码应用于现代密码加解密技术中。在这个过程中我也学到了很多关于编程方面的知识,了解了自己需要提高编程水平。九、参考文献1.Richard J.Spillman:CLASSICAL AND CONTEMPORARY CRYPTOLOGY ,清华大学出版社,2005-72.William Stallings: Cryptography and Network Security: Principles and Practice. 2nd ed. Prentice Hall, 1998.3.杨波著:现代密码学 ,清华大学出版社,2003-8.4.Wenbo Mao. Modern Cryptogr
7、aphy: Theory and Practicce. 电子工业出版社,2004-7.5许主洪著:加密与解密-密码技术剖析与实战应用 ,人民邮电出版社,2002-8.6张焕国,刘玉珍著:密码学引论 ,武汉大学出版社,2003.7段钢著:加密与解密 ,电子工业出版社,2005-3.实验成绩考查内容 分数 得分做好实验内容的预习,写出预习报告 10了解实验题目的调试方法 10按实验要求预先设计好程序 10认真记录实验数据并分析实验结果 10实验后按要求书写实验报告,记录实验用数据及运行结果 30创新能力强,在实验中设计的程序有一定的通用性,算法优化 20实验过程中,具有严谨的学习态度,认真、踏实、一丝不苟的科学作风 10