实验一 古典密码-Vigernere算法实验-2017
更新时间:2024-04-10 03:28:02 阅读量: 综合文库 文档下载
- 实验一小推荐度:
- 相关推荐
实验一 古典密码-Vigenere算法
一、实验目的
1、理解简单加密算法的原理;
2、掌握Vigenere密码的原理,完成Vigenere密码加解密程序的编写; 3、通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。 二、 实验预习提示
1、 多表代换密码
多表代换密码是指以一系列(两个以上)代换表一次对明文消息空间中的明文消息元素进行代换的加密方法。如果代换序列为非周期的无限序列,即对每个明文字母都采用不同的代换表(或密钥)进行加密,则相应的密码称为一次一密钥密码。
一次一密钥密码是理论上唯一不可破译的密码,可称为是无条件安全的。如果一个密码体制被称为是无条件安全的,即是指即便提供无穷的计算资源,密码分析者也无法攻破该密码体制。如果一个密码体制被称为是计算安全的,则是指密码分析者根据可利用的资源无法攻破该密码体制。
由于一次一密钥密码需要的密钥量和明文消息长度相同,因而难以广泛使用。为了减少密钥量,在实际应用中多采用周期多表代换密码,即代换表个数有限,重复地使用。典型的多表代换密码包括维吉尼亚(Vigenere)密码、博福特(Beaufort)密码、滚动密钥(running-key)密码、弗纳姆(Vernam)密码和转轮(rotor machine)密码等。
2、 Vigenere密码概述
Vigenere密码译为维吉尼亚密码或维热纳尔密码,维吉尼亚密码曾多次被发明。该方法最早记录在吉奥万?巴蒂斯塔?贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万?巴蒂斯塔?贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso)中。然而,后来在19世纪时被误传为是法国外交官布莱斯?德?维吉尼亚(Blaise De Vigenère)所创造,因此现在被称为“维吉尼亚密码”。
3、Vigenere密码
Vigenere密码是使用一系列恺撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。在一个恺撒密码中,字母表中的每一字母都会作一定的偏移,而Vigenere密码则是由一些偏移量不同的恺撒密码组成。为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到,相当于将26个恺撒密表合成一个,如表2.2.1所示。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。
表2.2.1 维吉尼亚密码表
例如,假设明文为: ATTACKATDAWN
选择某一关键词并重复而得到密钥,如关键词为LEMON时,密钥为: LEMONLEMONLE
对于明文的第一个字母A,对应密钥的第一个字母L,于是使用表格中L行字母表进行加密,得到密文第一个字母L。类似地,明文第二个字母为T,在表格中使用对应的E行进行加密,得到密文第二个字母X。以此类推,可以得到:
明文:ATTACKATDAWN 密钥:LEMONLEMONLE 密文:LXFOPVEFRNHR
解密的过程则与加密相反。例如:根据密钥第一个字母L所对应的L行字母表,发现密文第一个字母L位于A列,因而明文第一个字母为A。密钥第二个字母E对应E行字母表,而密文第二个字母X位于此行T列,因而明文第二个字母为T。以此类推便可得到明文。
Vigenere密码是一种以移位代换为基础的周期代换密码,其加密变换为:
Eki(mi) = mi + ki = ci mod N
解密变换为:
Dki(ci) = ci - ki = mi mod N
其中,ki∈K是密钥,mi∈M是明文,ci∈C是密文,N为明文字母表的长度。
可见,Vigenere密码与实验一中的单表移位密码的区别仅仅在于:单表移位密码中的位移量k是一个固定的常数;而Vigenere密码中的ki是变化的,字母的位置不同,则所采用的位移量也不同。
本实验通过编写一个简单的Vigenere密码加密和解密程序,了解加密和解密内部的过程和相关概念,更加深入地了解其原理,掌握Vigenere算法。 三、实验过程和指导 (一)实验要求
根据Vigenere密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现Vigenere加密和解密功能。 (二)实验准备
1、阅读教材有关章节,理解简单加密算法的原理,掌握Vigenere密码的原理。 2、初步编制好程序。 3、准备好多组测试数据。 (三)上机实验
将编写好的源代码输入计算机并进行调试分析,发现错误,再修改完善,最终实现实验所要求的功能。
(四)程序思路(仅供参考)
首先获取要加密或解密的内容以及使用的密钥,由于Vigenere密码是由一些偏移量不同的恺撒密码组成,因此需要将待加密或解密的内容中每个字符取出,然后针对每个字符分别加以移位处理。主要步骤如下:
1、读取要加密或解密的字符串以及使用的密钥
为简单起见,程序中可通过命令行输入要加密或解密的字符串,以及加密和解密所使用的密钥。
2、取出要加密或解密的字符串中的每个字符 取出每个字符,准备分别加以移位。 3、对每个字符进行移位处理
由于Vigenere密码是由一些偏移量不同的恺撒密码所组成的,因此与恺撒密码类似,在移位后可能发生超界,需要对出现超界的情况进行处理。此外,由于大写字母和小写字母判断是否超界的依据不同,因此程序中应将字符分为大写和小写分别处理。 (五)注意事项
1、模块化设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。具体到本实验,可分别编写两个函数,分别实现Vigenere加密和解密功能;
2、注意养成良好的编程风格,如空行的使用、注释的使用、缩进的使用等。 (六)分析与思考
在完成Vigenere加密和解密基本功能的基础上,进一步扩展程序功能,实现对文件的Vigenere加密和解密功能。 四、实验提交材料
1、程序源代码; 2、测试数据;
Vigenere加密和解密的实验测试数据,解密测试数据包括输入密钥正确时正确解密所得到的原始明文信息,以及输入密钥错误时解密所得到的相关明文信息。
3、实验报告。
实验报告应包括以下内容:实验名称、实验目的、实验内容及要求、实验过程及结果、实验中的问题及心得。
实验格式参见“附录:实验报告样例”。
五、程序运行结果: 1、Vigenere方阵
2、Vigenere加密
2、Vigenere解密
图2.2.1 Vigenere方阵
图2.2.2 Vigenere加密结果
图2.2.3 Vigenere解密结果(输入正确密钥)
图2.2.4 Vigenere解密结果(输入错误密钥)
正在阅读:
实验一 古典密码-Vigernere算法实验-201704-10
第一次带弟弟作文600字06-20
君子成人之美02-14
Outlook2003邮件存档指南07-24
关于封建迷信在一些地方泛滥的表现及其原因的调查报告01-19
塞尔达传说 灵魂轨迹 详细攻略 - 图文12-20
最新-高中语文《百年的美丽》学案1 沪教版第一册 精品03-20
我的家风家训小故事05-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 算法
- Vigernere
- 古典
- 密码
- 2017
- stata命令大全(全)
- 气体的等温变化
- 16道漂亮家宴菜 10分钟就能搞定哦
- 第三十五讲 读后感的写法
- 中石油 远程行政学原理第一、二、三次在线作业
- 2011年高考数学试题分类汇编三角函数(附答案)yztainhy
- 统计学课后练习与作业
- PCB TG值与测试
- 型钢拱架支撑施工方案
- 基于高斯消元法的三对角矩阵LU分解
- 浅谈中等职业学校图书馆的社会化服务
- 商务英语300句02
- 设备单元操作规程(全部)
- 初中八年级全套体育教案(共36课)
- 给青年教师课堂教学的十点建议
- 天津理工大学C++期末考试
- 临时便道施工方案
- 联想S890刷第三方recovery兼卡刷第三方ROM教程 - 图文
- 史上最完美2015中考物理分类汇编 - 光的折射 透镜
- 物理化学考试题库