实验一 古典密码-Vigernere算法实验-2017
更新时间:2024-01-25 03:29: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算法实验-201701-25
会计信息质量对决策的影响12-02
2016-2020年中国彩棉行业发展前景及投资风险预测报告目录08-25
自荐信 精选自荐信范文6篇02-23
幼儿园的防火设置知识点02-23
广东省考试院公布今年高考6篇优秀作文10-09
长江安徽段船舶定线制规定(2010)04-05
第二章第三节第2课时 溶解性、手性、无机含氧酸分子的酸性06-09
论我国宏观经济形势特点及政策04-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 算法
- Vigernere
- 古典
- 密码
- 2017
- 电子科大16秋《企业领导学》在线作业3
- 专题3 函数的零点问题(精讲深剖)-2019年高考数学高频考点全突破
- 第8章 Delphi数据库及SQL基础
- 审计习题
- 16道漂亮家宴菜 10分钟就能搞定哦
- 换热器通用胀接工艺 精品
- 第三十五讲 读后感的写法
- 工程流体力学试题
- 诸子百家产生的社会政治经济文化背景分析
- 2015年广州初中毕业生学业考试数学试卷
- 大工《钢筋混凝土结构》课程考试模拟试卷B答案
- 2016年山东省济宁市中考化学试题及答案 - 图文
- 关于2012年上半年毕业研究生学位论文答辩有关事宜的通知 - 图文
- 浙江省嘉兴市2017-2018学年高考数学二模试卷(理科) Word版含解析
- 2007年下半年会计从业资格考试《会计基础》试题及答案
- 《单片微型计算机与接口技术》思考题与习题解答01
- 江苏省镇江市2019年化学中考模拟试卷八
- 辞海悦读器EQ-600 - 说明书 - 图文
- 《“昆明俊发铂尔曼温泉酒店”17-1地块建设项目环境影响报告表》 - 图文
- 2018-2019-提交入党申请书之后的思想汇报范文word版本(1页)