【密码学原理与实践】(五)希尔密码

希尔密码(Hill Cipher)

定义

设m>=2为正整数,P=C=(Z26)m,且K={定义在Z26上的m×m可逆矩阵},对任意的密钥K,定义:ek(x)=xK和dk(y)=yK-1 ,以上运算都是在Z26上进行的。

从一个例子开始希尔密码的学习。

引例

设m=2,每个明文单元使用x=(x1,x2)来表示,同样密文单元使用y=(y1,y2)来表示。具体加密中,y1,y2被表示x1,x2的线性组合。例如:

y1=(11x1+3x2)mod26

y2=(8x1+7x2)mod26

使用矩阵,可将上式简写为
( y 1 , y 2 ) = ( x 1 , x 2 ) [ 11 8 3 7 ] (1) (y_1,y_2)=(x_1,x_2)\begin{bmatrix} 11 & 8 \\ 3 & 7 \end{bmatrix} \tag{1} (y1,y2)=(x1,x2)[11387](1)
以上的运算都是在Z26上进行的,密钥K一般取为一个m×m的矩阵,记为K=(ki,j).对于明文x=(x1,x2…xm)∈P以及k属于K,按照下图方法来计算y=ek(x)=(y1,y2…ym)
( y 1 , y 2 . . . y m ) = ( x 1 , x 2 . . . x m ) [ k 1 , 1 k 1 , 2 . . . k 1 , m k 2 , 1 k 2 , 2 . . . k 2 , m . . . k m , 1 k m , 2 . . . k m , m ] (2) (y_1,y_2...y_m)=(x_1,x_2...x_m)\begin{bmatrix} k_{1,1} & k_{1,2} ... & k_{1,m}\\ k_{2,1} & k_{2,2} ... & k_{2,m}\\ ...\\ k_{m,1} & k_{m,2} ... & k_{m,m}\\ \end{bmatrix} \tag{2} (y1,y2...ym)=(x1,x2...xm)k1,1k2,1...km,1k1,2...k2,2...km,2...k1,mk2,mkm,m(2)

或者也可以使用矩阵形式,直接表示为y=xK.

由上可知,密文是通过对明文进行线性变换得到的。

接下来我们主要来考虑解密的过程,也就是如何从y算出x.根据线性代数的知识我们很容易想到求矩阵的逆矩阵K-1来进行解密变换,相应的明文应该为x=yK-1

猜你喜欢

转载自blog.csdn.net/weixin_51656605/article/details/110421484
今日推荐