希尔(Hill)密码
算法简介
希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。
题目描述
名称:hill
题目:在线代的课本上出现了一堆神秘字母
xihlsseaoy
而旁边的矩阵是
1 2
0 1
快找出flag吧
flag提交格式SeBaFi{}
加密解密方法介绍(摘自百度百科)
加密
第一步,设定加密矩阵为K=112-120113,即在希尔密码中设q=26,L=3,选取满秩3×3阶可逆矩阵。我们之所以取3×3可逆方阵,也是为了计算方便,相应的安全性就要低一些。
第二步,将信息14,15,19,12,5,5,16,16,9,14,7分为4个列矩阵:X1=141519,X2=1255,X3=16169,X4=1470,其中X中的“0”是虚设的,其目的是为了与列矩阵的行数一致。列矩阵的行数3和个数4完全依赖于加密后的信息所对应的数字的多少和加密矩阵阶数决定。
第三步,将信息加密。进行矩阵的乘法运算:Y1=KX1=112-120213141519=6716100;Y2=KX2=112-1202131255=27-244;Y3=KX3=112-12021316169=501675;Y4=KX4=112-1202131470=21035。加密后的新码为67,16,100,27,-2,44,50,16,75,21,0。Y中的35虽然是多余的信息,但要连同密码一起发给对方,对方在破解密码时要参与计算。
解密
第一步,求密匙矩阵K的逆矩阵。K可用Mathematica计算。即K=-614-3125-1-3。
第二步,再次进行矩阵乘法运算:X1=-614-3125-1-3671610=141519;X2=-614-3125-1-327-244=1255;X3=-614-3125-1-3501675=16169;X4=-614-3125-1-321035=1470。这样原来的信息编码为14,15,19,12,5,5,16,16,9,14,7。
第三步,对照编码表,即可获得对方发来的信息内容为“NOSLEEPPING”。
此题解法过程
-
求矩阵的逆
[ 1 2 0 1 ] × [ a b c d ] = [ 1 0 0 1 ] \left[ \begin{matrix} 1 & 2\\ 0 & 1 \end{matrix} \right]\times \left[ \begin{matrix} a & b\\ c & d \end{matrix} \right]= \left[ \begin{matrix} 1 & 0\\ 0 & 1 \end{matrix} \right] [1021]×[acbd]=[1001]{ a + 2 c = 1 b + 2 d = 0 c = 0 d = 1 \begin{cases} a+2c=1\\ b+2d=0\\ c=0\\ d=1 \end{cases}