趣味算法实现.docVIP

  • 65
  • 0
  • 约 12页
  • 2015-10-24 发布于河南
  • 举报
趣味算法实现

趣味算法实现 实验3.1 Hill密码 1. 实验目的 了解加密和解密原理,掌握模运算下的矩阵运算以及数字与字符串之间的转换。 2. 算法原理 保密通信具有悠久的历史,现在更是被广泛应用于军事、经济、商业等各行各业。在保密通信中将原信息称为明码,加密后的信息称为密码。如果不知道加密方法,一般人无法知道明文内容,这样就起到了保密的作用。加密和解密的过程可以抽象为一个数学模型。 移位加密法 移位加密法是一种简单的加密方法。它通过将明文的字母按字母表中的次序平移若干位实现加密。如加密方法是字母平移5位,则明文字母和密文字母对应关系如下: 明文字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母 FGHIJKLMNOPQRSTUVWXYZABCDE 明文THEOLYMPICGAMES 加密后就成了 YMJTQDRUNHLFRJX. 一般人不知道它是什么意思,这就起到了加密的作用。如果知道它是由字母表平移5位得来的,那就很容易获得原文。数字5是解开密码的一把钥匙,称为密钥。 在移位加密法中,明文字母和密文字母之间的对应关系是固定的,这种加密方法可以通过分析词频,利用统计方法破译。 下面要介绍的Hill密码是用矩阵运算实现加密的,它不保持明文字母和密文字母之间固定的对应关系,破译起来比移位法困难。 模n运算 在模n运算下,参与运算的只有0,1,2,…n-1这n个元素。规定两个元素的和(积)是按普通加法(乘法)运算的结果减去或加上n的某个倍数后得到的在0和n-1之间的数。例如在模15运算下4+13=2,4*13=7。通常记做4+13=2(mod 15),4*13=7(mod 15)。 在模n运算下,元素m的加法负元是n-m。如果m*k=1(mod n),则称k是m的乘法逆元。如在模15运算下,13的逆元是7,4的逆元还是4。值得注意的是在模15运算下,除了0没有逆元外,3,5及3,5的倍数6,9,10,12也没用逆元。 可以证明:若m和n的最大公因子等于1,即gcd(m,n)=1,则在模n运算下元素m存在唯一的逆元。特别,当n是素数时,元素1,2,…,n-1都有逆元,此时数0,1,2…,n-1在模n下可以进行加减乘除(0除外)四则运算,它们构成一个数域,称为有限域。 模n下矩阵加法、乘法以及数乘矩阵运算与模n下数字的加法、乘法运算相似,先对矩阵做普通加法、乘法和数乘矩阵运算,然后所有数字以n取模即可。 定义 两个方阵A、B如满足AB=BA=E(mod n),则称矩阵A模n可逆,B称为A的逆矩阵,记做(mod n)。 矩阵A的逆矩阵可以利用伴随矩阵,按求得。 Hill加密法 先将英文字母变换成数字; 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 Z 1 2 3 4 5 6 7 8 9 10 ………………………………24 25 0 称其为字母表的表值。 将明文按n个字母分组,并用对应的数字取代字母,构成一个个n维 向量。 取一个在模n运算下可逆的n阶矩阵A,用A左乘(2)中的向量得 到新向量;把新向量中的数字按(1)中的对应关系换回成字母即得到密文。 按例中的方法求出可逆矩阵A在模n下的逆矩阵B,用B左乘(3) 中得到的新向量则重新得到(2)的向量,从而得到原始明文。矩阵A是解密的关键,称为密钥。 3. 实例分析 3.1 在模26运算下,求矩阵的逆矩阵。 解:由于det(A)=3,且(mod 26),故 3.2 采用Hill2加密法(即明文2个2个分组),加密矩阵取,对 “THE OLYMPIC GAMES” 进行加密,再将结果解密。 解:(1)为了保留英文单词之间的空格,可以增加逗号“,”,句号“.”和空格“ ”当做字母,连同26个英文字母一起与数字1,2,…,28,0之间建立对应关系,其中1~26分别对应A~Z,“,”对应27,“.”对应28,“ ”对应0。 (2)将“THE OLYMPIC GAMES”两两分组,最后不足两个字母时用“空格”补足,并用数字代替,得 (3)取矩阵, 输入 A=[2 7;4 5]; x=[20 8; 5 0;15 12;25 13; 16 9; 3 0; 7 1;13 5; 19 0]; y=mod(A*x,29) 结果为: y = 9 10 27 25 8 6 21 3 9 4 20 4 20 22 12 4 19 18 这个换成字母就是“IDJT,DYTHVFLUDCSIR”,这就是密文。 注意,明文中的两个“E”,在密文中分别变成了“J”和“S”;而密文中的三个“D”对应明文中的“

文档评论(0)

1亿VIP精品文档

相关文档