希尔密码详解

本文翻译自《Learn Hill Cipher with 3x3 Matrix Multiplicative Inverse Example》,英文水平有限,如有不足之处还请指正。

希尔密码是什么?

希尔密码是一种基于线性代数的多表替换密码。使用希尔密码需要对矩阵的有基本的了解。希尔密码也是一种分块加密算法(block cipher),它接受输入的明文,并生成一个密文块。希尔密码是由Lester S在1929年发明的。是第一个同时处理三个及以上符号或字母的多表密码。下面的公式用于加密和解密:

C i p h e r = ( P l a i n × K e y ) m o d    N P l a i n = ( C i p h e r × K e y − 1 ) m o d    N Cipher = (Plain \times Key) \mod N \\ Plain = (Cipher \times Key^{-1}) \mod N Cipher=(Plain×Key)modNPlain=(Cipher×Key1)modN

其中, P l a i n Plain Plain是加密前的明文矩阵, C i p h e r Cipher Cipher是加密后的密文矩阵, K e y Key Key是密钥矩阵(要求是一个方阵), N N N是字符集的大小,, K e y − 1 Key^{-1} Key1是密钥矩阵在模N空间上的逆矩阵。

希尔密码的加密步骤

接下来让我们通过下面的例子来理解希尔密码加密解密的流程。

加入我们要加密如下信息:“ATTACK IS TONIGHT”,密钥矩阵 K K K如下:
K = ( 3 10 20 20 9 17 9 4 17 ) K=\begin{pmatrix} 3 & 10 & 20 \\ 20 & 9 & 17 \\ 9 & 4 & 17 \end{pmatrix} K= 32091094201717
加密这一段明文的步骤如下:

1 将明文转化为数字矩阵

第一步是将给定的明文转化为明文数字矩阵,首先按照A-Z分别映射到0-25的方式,将原文字母映射为数字,并且将得到的数字序列根据密钥的维度排列成明文矩阵 P P P(在我们的教程中采用的是按行排列的方法)。
P = ( A T T A C K I S T O N I G H T ) = ( 0 19 19 0 2 10 8 18 19 14 13 8 6 7 19 ) P=\begin{pmatrix} A & T & T \\ A & C & K \\ I & S & T \\ O & N & I \\ G & H & T \end{pmatrix} = \begin{pmatrix} 0 & 19 & 19 \\ 0 & 2 & 10 \\ 8 & 18 & 19 \\ 14 & 13 & 8 \\ 6 & 7 & 19 \end{pmatrix} P= AAIOGTCSNHTKTIT = 00814619218137191019819

由于加密过程中使用了矩阵乘法运算,因此对于维度为 M × M M\times M M×M的密钥矩阵,我们需要将明文序列排列成一个 R × M R\times M R×M的矩阵,当序列长度不够时,可以用我们预先设定的方式进行填充。

2 计算矩阵乘法

第二步,做矩阵模 N N N乘法,即现将两矩阵相乘,再将所得结果每个元素均除 N N N取余,由于教程中加密字符集仅涉及26个字母,因此 N = 26 N=26 N=26,如下
C = P × K m o d    N = ( 0 19 19 0 2 10 8 18 19 14 13 8 6 7 19 ) × ( 3 10 20 20 9 17 9 4 17 ) m o d    26 C=P\times K\mod N = \begin{pmatrix} 0 & 19 & 19 \\ 0 & 2 & 10 \\ 8 & 18 & 19 \\ 14 & 13 & 8 \\ 6 & 7 & 19 \end{pmatrix} \times \begin{pmatrix} 3 & 10 & 20 \\ 20 & 9 & 17 \\ 9 & 4 & 17 \end{pmatrix} \mod 26 C=P×KmodN=

  • 15
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值