希尔密码
普莱费尔密码特别之处在于一次加密多个字母。当密码学家了解这种加密法后,他们进一步开始尝试以三连字甚至更多字为单位的加密法。但是他们失败了,其中一个重要原因是维护三维(或以上)表是十分困难的。要成功设计这种加密法,需要引进专业的数学方法。
希尔密码诞生在1929年,是以其发明人Lester S. Hill来命名的。他是纽约亨特学院的数学教授,在1929年发表一篇论文提出了这种基于联立方程的加密算法。
希尔密码以每次加密m个明文字母块完成加密过程。首先需要对26个字母赋值,通常是a=0,b=1,…,z=25(希尔本人采取的是随机赋值)。块中的每个字母的数值一起用于生成一组新的数值。例如,m=3,需要加密的明文块的三个字母的数值(设为p1、p2和p3)通过下面的方程组转换成密文数值C1、C2和 C3。
该加密法的密钥就是矩阵
举个例子,现在对矩阵赋值如下:
利用这个密钥和上面的方程,明文“now”首先转换成数字:13 14 22。将这些数值代入方程解得密文数值:23 20 4。再将这些数字转换成字母后,就得到密文“xue”了。
加密密钥是矩阵M,那么解密密钥就是 M -1 。这意味着要使解密可行,矩阵M必须是可逆的,因此密钥值并不能随意选取。从m=3的例子中归纳出用数学方法表达希尔密码的一般形式如下:
密钥为可逆矩阵
将明文分块使得每块含有n个字母(最后不足位以z不足),用n×1的向量表示。例如第 i 块含有字符p1,p2,p3,…,pn:
那么密文就由如下方程确定:
希尔密码很好的防止了密文被攻击。而当密钥矩阵越大时,该加密法抗攻击能力就越强。但是用已知明文攻击法可以很容易地破译该密码。其攻击过程类似先前提到的汇编一部明文与密文的对应词典。即用已知明文和密文建立方程组,求解后寻找出密钥。