实验一 古典密码-Vigernere算法实验-2017

合集下载

L001001012-古典密码-维吉尼亚密码实验

L001001012-古典密码-维吉尼亚密码实验
PC网络接口,本地连接与实验网络直连。
软件描述
VC6.0
实验环境描述
1、学生机与实验室网络直连;
2、VPC1与实验室网络直连;
3、学生机与VPC1物理链路连通;
预备知识
人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的。维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。维吉尼亚密码的密钥空间大小为26m,所以即使m的值很小,使用穷尽密钥搜索方法也需要很长的时间。例如,当m=5时,密钥空间大小超过1.1*107,这样的密钥量已经超出了使用手算进行穷尽搜索的能力范验课题名称
L001001012-古典密码-维吉尼亚密码实验
实验目的与要求
维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及解密程序,通过本实验可以加深理解维吉尼亚密码原理。
实验环境
VPC1(虚拟PC)
Windows XP
VPC1连接要求
维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
解密流程:
第一步:编号。将A-Z以编号0-25编号;
第二步:获取密钥。举例:wangyuhang;
第三步:密文处理。去掉所有空格;处理后:senxadvyyoikneqywvrekueyals;

实验一 古典密码算法

实验一 古典密码算法

实验一古典密码算法1、目的使学生认识理解古典密码算法:凯撒密码算法,维吉尼亚密码算法。

2、环境PC 1 台、安装软件VC60、JBuilder8、Delphi7。

3、预备知识1.凯撒密码的过程:表1:字母编码表再用配对字母取代信息里的原始字母位移加密法(shift cipher):模数计算。

E k(x)=(x+k)mod 26,D k(y)=(y –k)mod 26如:k=5;“hello world”加密为:mjqqt….2.维吉尼来密码维吉尼来方阵:(不区分大小写)数学表达式:=+C i P i K i[]([][])%26;验证:V[0,0]=0;V[25,25]=24V[13,12]=25解密:[]([][])%26;P i C i K i =-如:k=”BEST ”;“HELLO WORLD ”加密为:IIDE …. 4字符一组: hellOWOR LD BESTBEST BEST以第一行字母为列标,2行为行标(B ,H )=I ; 解密: IIDE BEST ,明文字母是B 行字母为I 的列号H ,或B 列=I 的行H 。

4、方法和步骤(1)请根据算法的描述和你对算法过程的理解,选用一种编程语言C ,C++,Java,Pascal 来实现凯撒算法,用自己学号的最后起之3位数为密钥,加密自己姓名的全拼,将解密,将密文为结果写于实验报告上。

(2)请根据算法的描述和你对算法过程的理解,选用一种编程语言C,C++,Java,Pascal来实现维吉尼亚算法,用“best”为密钥,加密自己姓名的全拼,将解密,将密文为结果写于实验报告上.附参考源程序:Vigenere.cpp.pdf5、注意算法要实现加密过程和解密过程并对正确性设计验证途径。

古典算法加密实验报告

古典算法加密实验报告

一、实验目的通过本次实验,掌握古典加密算法的基本原理和实现方法,加深对古典加密算法的理解,提高编程能力。

二、实验内容本次实验主要涉及以下古典加密算法:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码三、实验原理1. 仿射密码仿射密码是一种单字母替换密码,其加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。

解密原理与加密原理相反。

2. 单表代替密码单表代替密码的加密原理为利用代替表,将明文中的每个字符映射到密文。

解密原理为对代替表进行反向查找,由密文映射回明文。

3. 维吉尼亚密码维吉尼亚密码的加密原理为通过加密方程Ci = (pi k(i mod m)) mod 26,由明文得到密文。

解密原理为解密过程是加密过程的逆过程,通过解密方程pi = (Ci k(i mod m)) mod 26。

四、实验步骤1. 仿射密码(1)编写加密函数encrypt,输入明文和密钥a、b,输出密文。

(2)编写解密函数decrypt,输入密文和密钥a、b,输出明文。

(3)测试加密和解密函数,验证其正确性。

2. 单表代替密码(1)编写加密函数subencrypt,输入明文和代替表,输出密文。

(2)编写解密函数subdecrypt,输入密文和代替表,输出明文。

(3)测试加密和解密函数,验证其正确性。

3. 维吉尼亚密码(1)编写加密函数vigenereencrypt,输入明文和密钥,输出密文。

(2)编写解密函数vigeneredecrypt,输入密文和密钥,输出明文。

(3)测试加密和解密函数,验证其正确性。

五、实验结果与分析1. 仿射密码通过编写encrypt和解密函数,成功实现了仿射密码的加密和解密过程。

实验结果表明,加密和解密函数运行正常,能够正确转换明文和密文。

2. 单表代替密码通过编写subencrypt和解密函数,成功实现了单表代替密码的加密和解密过程。

维吉尼亚(Vigenere)密码算法(Javascript实现加密与解密)

维吉尼亚(Vigenere)密码算法(Javascript实现加密与解密)

维吉尼亚(Vigenere)密码算法(Javascript实现加密与解密) 传统加密技术对于当今的⽹络安全发挥不了⼤作⽤,但每⼀本讲述密码学的书的开头都会率先介绍它们,因为它们是密码学的基础,是密码学的历史。

Vigenere密码就是⼀种传统加密技术,它是多表代换密码,能够有效改进单表代换密码的词频分布特征问题。

详细介绍请参考密码学相关书籍。

⼏乎每⼀本密码学的书在讲述Vigenere密码的章节都会有这么⼀个《Vigenere代换表》⽤户讲解Vigenere密码机制:A B C D E F G H I J K L M N O P Q R S T U V W X Y ZB C D E F G H I J K L M N O P Q R S T U V W X Y Z AC D E F G H I J K L M N O P Q R S T U V W X Y Z A BD E F G H I J K L M N O P Q R S T U V W X Y Z A B CE F G H I J K L M N O P Q R S T U V W X Y Z A B C DF G H I J K L M N O P Q R S T U V W X Y Z A B C D EG H I J K L M N O P Q R S T U V W X Y Z A B C D E FH I J K L M N O P Q R S T U V W X Y Z A B C D E F GI J K L M N O P Q R S T U V W X Y Z A B C D E F G HJ K L M N O P Q R S T U V W X Y Z A B C D E F G H IK L M N O P Q R S T U V W X Y Z A B C D E F G H I JL M N O P Q R S T U V W X Y Z A B C D E F G H I J KM N O P Q R S T U V W X Y Z A B C D E F G H I J K LN O P Q R S T U V W X Y Z A B C D E F G H I J K L MO P Q R S T U V W X Y Z A B C D E F G H I J K L M NP Q R S T U V W X Y Z A B C D E F G H I J K L M N OQ R S T U V W X Y Z A B C D E F G H I J K L M N O PR S T U V W X Y Z A B C D E F G H I J K L M N O P QS T U V W X Y Z A B C D E F G H I J K L M N O P Q RT U V W X Y Z A B C D E F G H I J K L M N O P Q R SU V W X Y Z A B C D E F G H I J K L M N O P Q R S TV W X Y Z A B C D E F G H I J K L M N O P Q R S T UW X Y Z A B C D E F G H I J K L M N O P Q R S T U VX Y Z A B C D E F G H I J K L M N O P Q R S T U V WY Z A B C D E F G H I J K L M N O P Q R S T U V W XZ A B C D E F G H I J K L M N O P Q R S T U V W X Y 加密过程很简单,就是给定密钥字母x和明⽂字母y,密⽂字母是位于x⾏和y列的那个字母。

实验一古典密码-Vigernere算法实验-2022

实验一古典密码-Vigernere算法实验-2022

实验一古典密码-Vigernere算法实验-2022一、实验目的1、理解简单加密算法的原理;2、掌握Vigenere密码的原理,完成Vigenere密码加解密程序的编写;3、通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。

二、实验预习提示1、多表代换密码多表代换密码是指以一系列(两个以上)代换表一次对明文消息空间中的明文消息元素进行代换的加密方法。

如果代换序列为非周期的无限序列,即对每个明文字母都采用不同的代换表(或密钥)进行加密,则相应的密码称为一次一密钥密码。

一次一密钥密码是理论上唯一不可破译的密码,可称为是无条件安全的。

如果一个密码体制被称为是无条件安全的,即是指即便提供无穷的计算资源,密码分析者也无法攻破该密码体制。

如果一个密码体制被称为是计算安全的,则是指密码分析者根据可利用的资源无法攻破该密码体制。

由于一次一密钥密码需要的密钥量和明文消息长度相同,因而难以广泛使用。

为了减少密钥量,在实际应用中多采用周期多表代换密码,即代换表个数有限,重复地使用。

典型的多表代换密码包括维吉尼亚(Vigenere)密码、博福特(Beaufort)密码、滚动密钥(running-key)密码、弗纳姆(Vernam)密码和转轮(rotormachine)密码等。

2、Vigenere密码概述Vigenere密码译为维吉尼亚密码或维热纳尔密码,维吉尼亚密码曾多次被发明。

该方法最早记录在吉奥万巴蒂斯塔贝拉索(GiovanBattitaBellao)于1553年所著的书《吉奥万巴蒂斯塔贝拉索先生的密码》(意大利语:Lacifradel.Sig.GiovanBattitaBellao)中。

然而,后来在19世纪时被误传为是法国外交官布莱斯德维吉尼亚(BlaieDeVigenère)所创造,因此现在被称为“维吉尼亚密码”。

3、Vigenere密码Vigenere密码是使用一系列恺撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

实验一古典加密算法的实现

实验一古典加密算法的实现

凯撒密码映射表
明 A B C D E 文 密 D E F G H 文 F G H I J K L M I J K L M N O P
明 N O P Q R 文
S T U V W X Y Z
密 Q R S T U V W X Y Z撒密码的算法,对”Thisisanew term”进行加密 • 要求:(1)
要求
• 以密钥为:m*n=3 * 4,以及f= ((1234)(2413))对” ENGINEERING” 进行: • 要求:(1)
– 输入: ENGINEERING – 输出:(密文)
• (2)
– 输入:密文 – 输出: ENGINEERING
实验一 古典加密算法的实现
• 实验目的:
– 通过编程实现凯撒密码算法和矩阵换位密码算 法,加深对古典密码体制的了解。
• 实验原理:
– 古典加密算法的实验原理(详见下文ppt)
• 实验环境:
– 运行Windows操作系统的PC,TC编译环境
(1)凯撒密码加密算法
• 典型的单表代替密码是凯撒密码。 • 凯撒密码是最古老的代替密码,以英文26个字母 为例,它用D表示A,用E表示B,用F表示C,…, 用C表示Z,即:密文字母是明文字母后面的第三 个位置上的字母。这种映射关系表示为如下函数: • F(a)=(a十k)mod n • 其中:a表示明文字母,n为字符集中字母 个数,k=3为密钥。(移位密码、加法密码)
– 输入:Thisisanewterm – 输出:(密文)
• (2)
– 输入:密文 – 输出:Thisisanewterm
思考题:矩阵换位密码算法的实现
• 把明文中的字母按给定的顺序安排在一矩阵中,然 后用另一种顺序选出矩阵的字母来产生密文。 • 例:明文ENGINEERING按行排在3 × 4矩阵中,最 后一行不全用ABC…填充。 • E N G I 给置换f=((1234)(2413)) NIEG • N E E R ERNE • I NG A NAIG • 得到密文:NIEGERNENAIG • 密钥为:m*n=3 * 4,以及f= ((1234)(2413)) • 即:k=(m * n,f)

现代密码学-古典密码-实验报告

现代密码学-古典密码-实验报告

现代密码学实验报告院系:理学院班级:信安二班姓名:学号:前言密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。

密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。

密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。

研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。

研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。

密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。

密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。

现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。

古典密码算法实验在密码编码体制中有两种基本也是古老的编码体制一直沿用至今,它们是代替密码和置换密码,其历史悠久并且是现代密码体制的基本组成部分,在密码学中占有重要地位。

古典密码是密码学发展的一个阶段,也是近代密码学产生的渊源,一般把Shannon 在1949 年发表“保密系统的通信理论”之前的时期称为古典密码时期。

尽管古典密码大多比较简单,一般可用手工或机械方式实现,且都可用统计分析方法破译,目前已很少采用。

但是,古典密码所采用的代替技术和置换技术仍然是现代分组密码算法设计的基础,了解它们的设计原理,有助于理解、设计和分析现代密码。

一、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。

二、实验原理代替(Substitution)是古典密码中基本的处理技巧,就是将明文字母由其他字母表中的字母替换的一种方法。

实验一古典密码算法

实验一古典密码算法

实验一古典密码加密算法【实验目的】一般的密码学实验要求学习者编写实现加密法或分析工具的程序,但这势必要占用学习者较多的时间去调试程序,减少真正学习密码学的时间。

分析加密程序CAP是一款密码加密与分析的软件,包含了古典密码学和现代密码学常用的密码算法和分析工具。

学习者可以利用CAP更好地学习加密和密码分析技术,而不必花费大量的时间调试程序。

b5E2RGbCAP【实验目的】1、理解代替密码学加密过程;2、掌握置换密码学加密过程;3、自行设计恺撒密码<Caesar Cipher )加密工具,并验证恺撒密码<Caesar Cipher )加密过程;p1EanqFDPw4、掌握经典加密分析软件CAP的使用并验证古典密码加密算法;【实验环境】1、基于Windows的PC机一台;设计设计恺撒密码<Caesar Cipher )加密工具时的软件环境根据学生自己选择的平台安装,本设计软件平台可以是C语言,Visual C++,Visual C#,Visual Basic均可,主要是实现恺撒密码<Caesar Cipher )算法即可。

DXDiTa9E3d2、CAP加密与分析软件【实验内容】1、以C#平台为例说明恺撒密码<Caesar Cipher )算法的实现。

程序主界面如图1所示:程序源码using System。

……(省略部分生成代码>namespace Encryption{publicpartialclassForm1 : Form{int key。

privatestring Encryption(int key,refstringInputString>RTCrpUDGiT{StringBuilder str = newStringBuilder(>。

char ch,chtemp。

int temp。

for(int i=0。

i<InputString.Length。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一古典密码-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密码是一种以移位代换为基础的周期代换密码,其加密变换为:
E ki(m i) = m i + k i = c i mod N
解密变换为:
D ki(c i) = c i - k i = m i mod N
其中,k i∈K是密钥,m i∈M是明文,c i∈C是密文,N为明文字母表的长度。

可见,Vigenere密码与实验一中的单表移位密码的区别仅仅在于:单表移位密码中的位移量k是一个固定的常数;而Vigenere密码中的k i是变化的,字母的位置不同,则所采用的位移量也不同。

本实验通过编写一个简单的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.2.1 Vigenere方阵
2、Vigenere加密
图2.2.2 Vigenere加密结果
2、Vigenere解密
图2.2.3 Vigenere解密结果(输入正确密钥)
图2.2.4 Vigenere解密结果(输入错误密钥)。

相关文档
最新文档