Hill密码的加密,解密和简单破译
Hill密码是一种简单的加密手段。
优点是:
可以实现同一个字母在不同的上下文中,对应密文中不同的字母。
缺点是:
加密前明文是几个字母,加密后还是几个字母。容易被穷举。
以下,我们都用英文字母举例,比较简单明了
下面简要介绍一下加密过程
首先,要将26个字母,编号,例如
a:1 b:2 c:3 d:4 e:5 f:6 g:7 h:8 i:9 j:10 k:11 l:12 m:13
n:14 o:15 p:16 q:17 r:18 s:19 t:20 u:21 v:22 w:23 x:24 y:25 z:0
其次,确定密钥,在这里其实就是加密矩阵,Hill2密码对应的是一个二阶矩阵,Hill n密码对应的就是一个N接矩阵了,
我们这里取二阶,比较简单。如:
取个加密矩阵 A=(1 2;0 3) 说明:大家凑合着看啊,其实是 1 2是一行,0 3是一行。画个矩阵太麻烦了
以下说明,矩阵里加了 分号 就表示换行哈
有了 字母编号表和密钥 就万事具备了。
我们来将下面一段 字母加密
woshigetiancai
首先,将字母两两分组 wo ,sh, ig, et, ia, nc, ai。
这里刚好是偶数个字母,如果是奇数个,就重复一次,最后一个字母,凑成偶数。
其次,查询字母标号表,将分好组的字母,写成向量形式,其实就是写成一个1*2的矩阵(我就讨厌,那些书,
明明就是个1*2矩阵,偏偏要要定义成向量,增加无谓的概念):如
w 对应 23,o对应15,写成向量(23;15)(这个是竖着写的,实在不好意思,矩阵实在不太好画,手头没matlab)
以此类推,得到7组向量,分别是
wo对应的(23;15) sh对应的(19;8) ig对应的(9;7) et对应的(5;20) ia对应的(9;1) nc对应的(14;3) ai对应的(1;9)
将 这些向量分别 左乘 密钥 注意:这里矩阵这个东西比较麻烦,不符合乘法交换律,两个矩阵左乘和右乘的结果是不一样的
左乘就是将 密钥放到 左边,右边是 向量 A*P(向量)
又得到7组向量,分别是
(38;45),(27;24),(16;24),(25;60),(10;3),(17;9),(10;27)
这时候,我们就遇到了一个问题,我们定义的字母标号表是 0~25的,这里又是45 ,又是 60的,怎么办??
没关系,遇到比25大的,我们就 减26 知道,让数字落在 0~25之间就可以了
例如 原向量 (38;45) 我们就变成了 (12;19),这样就落在我们的字母标号表里了,很简单吧
以此类推,最后得到的 7组向量就变成了
(12;19),(1;24),(14;24),(25;8),(10;3),(17;9),(10,1)
最后再将数字通过字母标号表 对照过来就可以了
这里是 lsaxnxyhjcqija 这样就和原字符有很大的区别了吧。
hill密码,加密是通过三个手段 一个是:字母标号表,一个是:加密矩阵,就是密钥,最后一个是:加密矩阵的阶数。
如果想简单的通过 穷举 来破解的话 ,还是有一定难度的。
浙公网安备 33010602011771号