唯吉利亚密码的加解密 下载本文

内容发布更新时间 : 2024/11/20 13:31:53星期一 下面是文章的全部内容请认真阅读。

密码学实验报告

实验六 唯吉利亚密码的加解密

一、 实验目的与意义

1 2

实现唯吉利亚密码的加解密。 复习C编程的基本知识

二、 实验环境

Windows xp sp2

Microsoft visual c++6.0

三、 实验原理

Vigenere表:

Vigenere加密法是一个很著名的多码加密法,它具有一个很有趣的历史。多码加

密法是一种替换加密法,其中的每个明文字母可以用密文中的多种字母来替代,而每个密文字母也可以表示多种明文字母。这种加密法因为其明文与密文的对应关系可以改变,使得频率分析工具无法很好地发挥作用。在很长的一段时间内,多码加密法成为密码使用中的一个重要内容,如Enigma机。

Vigenere加密法是基于关键词的加密系统,但不是像单码关键词加密法那样使用关键词来定义替换模式的,关键词写在明文的上面,并不断重复书写,这样每个明文字母都与

一个关键词的字母关联。例如,如果关键词为\,而明文为\is the plaintext\,那么,关键词——明文的关联如下所示: h o l d h o l d h o l d h o l d h o t h i s i s t h e p l a i n t e x t

每个明文字母与关键词的一个字母对应。例如,第一个明文字母\与关键词的字母\配对。利用如下图所示的Vigenere表,在密钥字母确定的行和明文字母确定的列交叉处的字母即为用来替代明文字母的密文字母。例如上面例子中第一对是\,在下表中查找\行和\列的交叉处,即为密文字母\。重复以上过程可以生成以下的密文: 密钥 h o l d h o l d h o l d h o l d h o 明文 t h i s i s t h e p l a i n t e x t 密文 a v t v p g e k l d w d p b e h d h Vigenere表:

在整个密文中,”v”出现了两次,分别代替”h”和”s”。这个例子就说明了多码加密法的基本性质,即同一个密文字母可以用来表示多个明文字母。这样,对于单码加密法所常用的频率分析就无法起作用了。

要破解Vigenere加密法,需要颠倒该查找过程。利用写在明文上面的密钥和密钥与密文的对应关系来找到Vigenere表中对应的明文。要实现这些就要找到密钥所对应的行才行。

Vigener密码是一种多字母替换密码,也就是它使用了多个字母的映射,这样使得初始明文中字母间的相对频率不那么明显,故其对简单的频率分析具有免疫能力。 Vigenere密码有效地改变了明文字符和密文字符之间的单字符映射关系,它采用的映射关系基于上图所示的表格。这个表格的每一行实际上是按Caesar密码进行移动的,字母的移动值也就是它所在的行号,如A行向前移动0个字母,B行向前移动1个字母,依此类推。Vigenere密码将这个表格与一个关键词合并起来进行加密。 Vigenere密码的数学定义:

给定一个任意密钥k,其中k=(k1,k2,k3 ?..Kn)并且ki∈Z26(1≦i≦n);任意明文P=(P1,P2,P3?..Pm),并且Pj∈Z26(1≦j≦m);将加密后得到的密文表示为c=(c1,c2??cm)并且cj∈(1≦j≦m)。 这样,我们中以定义如下所示的加密操作Eki: Cj=Eki(Pj)(其中Eki(p)j→Pj+Ki(mod 26))