密码学——几种典型的古典密码体制(Caesar体制、Playfair体制、Vigenere体制、Beaufort体制以及Hill体制)

本篇文章将对几种典型的单表、多表古典密码体制进行总结,其中包括单表密码体制的Caesar体制、Playfair体制和多表密码体制的Vigenere体制、Beaufort体制以及Hill体制。并展示部分体制对应的简单例题,从而使读者更加容易理解古典密码体制是如何加减密的。


引入

为了方便起见,将引入英文字母表和 Z 26 Z_{26} Z26对应关系表,以此来表示字母的符号同时也将表示字母所对应的整数。

abcdefghijklm
0123456789101112
nopqrstuvwxyz
13141516171819202122232425

一、单表古典密码体制

1.Caesar体制——典型的单表加法密码体制

加密算法: c = m + 3   m o d   26 c=m+3 \ mod\ 26 c=m+3 mod 26解密算法: m = c − 3   m o d   26 m=c-3\ mod\ 26 m=c3 mod 26 密钥:3
Caesar密表

abcdefghijklm
defghijklmnop
nopqrstuvwxyz
prstuvwxyzabc

浅显一点就是 a ( a 对应的数字就是 0 ) → 0 → c = 0 + 3 = 3 → d ( 3 对应的字母就是 d ) a(a对应的数字就是0)\to 0\to c=0+3=3 \to d(3对应的字母就是d) a(a对应的数字就是0)0c=0+3=3d(3对应的字母就是d)

2.标准字头密码体制——单表置换密码体制

利用一个密钥字来构成置换作为密钥,比如密钥字选则cipher,故密表如下所示。

abcdefghijklm
cipherabdfgjk
nopqrstuvwxyz
lmnoqstuvwxyz

浅显一点就是选择一个单词作为密钥放在首部,后面的明文字母所对应的密文字母不会包括前面首部的单词中的字母。未包含在密钥字的字母就按着顺序进行对应明文字母。

二、多表古典密码体制

1.Playfair体制

Playfair体制的密钥是一个5x5的矩阵 P = ( p i j ) 5 × 5 P=(p_{ij})_{5\times5} P=(pij)5×5
密钥的选择: 先根据上面的置换密码体制构造一个字母表的置换密码,此处j当作i,一共25个字母,再按行排列成一个5x5的矩阵。

加密过程:
首先: 将明文字母串以两个字母为一组进行分组,如果在成对分组中有两个相同字母紧挨着或者最后一个字母不成对的时候就会插入一个q(实际字母是自己决定的)。明文字母对 m 1 m 2 m_1m_2 m1m2,密文字母对 c 1 c 2 c_1c_2 c1c2
加密方法:
m 1 , m 2 m_1,m_2 m1m2在密钥矩阵中为同一行,则密文 c 1 , c 2 c_1,c_2 c1c2分别为紧靠 m 1 , m 2 m_1,m_2 m1m2右端的字母。第一列为最后一列的右边。
m 1 , m 2 m_1,m_2 m1m2在密钥矩阵中为同一列,则密文 c 1 , c 2 c_1,c_2 c1c2分别为紧靠 m 1 , m 2 m_1,m_2 m1m2下方的字母。第一行为最后一行的下方。
m 1 , m 2 m_1,m_2 m1m2在密钥矩阵中为既不同行也不同列,则密文 c 1 , c 2 c_1,c_2 c1c2分别为由 m 1 , m 2 m_1,m_2 m1m2确定的矩形上的其他两个角上的字母。其中 c 1 c_1 c1 m 1 m_1 m1同行, c 2 c_2 c2 m 2 m_2 m2同行。

例题:
设密钥矩阵 P = ( c i p h e r a b d f g k l m n o q s t u v w x y z )    P= \begin{pmatrix} c & i &p &h & e \\ r & a &b &d &f \\ g&k&l&m&n \\ o&q&s&t&u \\v&w&x&y&z \end {pmatrix} \ \ P= crgoviakqwpblsxhdmtyefnuz   
明文为:Playllm,请使用Playfair加密
解:
首先将明文进行分组为 Pl ay lq lm(注意,按照原来两两分组的话,ll为一组,字母相同所以插入了字母q)
Pl属于同一列,所以选择两个字母下方的字母,故加密后为Bs;
ay属于既不同行也不同列,故选择由ay构成的矩形的另两个角的字母,故为dw;(对应同行)
lq同理上面不同行不同列,故加密为ks;
lm属于同一行,故选择紧靠两个字母右端的字母mn。
故密文为:Bs dw ks mn

2.Vigenere体制——多表加法密码

c = E k ( m ) = c 1 c 2 . . . c n ,其中 c i = ( m i + k i ) m o d   26 c=E_k(m)=c_1c_2...c_n,其中c_i=(m_i+k_i)mod\ 26 c=Ek(m)=c1c2...cn,其中ci=(mi+ki)mod 26
例题: 密钥为boy,试对明文University加密
解:根据字母表得boy三个字母分别对应的数字为1,14,24;且密钥长度=分组长度=3,故将明文进行分解为Uni ver sit y U → 20 → 1 + 20 = 21 → V U\to 20\to 1+20=21\to V U201+20=21V n → 13 → 14 + 13 = 27 = 1 → b n\to 13\to 14+13=27=1\to b n1314+13=27=1b i → 8 → 24 + 8 = 32 = 6 → p i\to 8\to 24+8=32=6\to p i824+8=32=6p…中间过程省略…每三个为一组,每一个对应着不同的算法,以1+,14+,24+为一组 y → 24 → 1 + 24 = 25 → z y\to 24\to 1+24=25\to z y241+24=25z最终结果为:Vbg wsp twr z
注意:全程都要做模运算

3.Beaufort体制——多表加法密码

与Vigenere体制极其相似,不过就是算法上有一点点小变化。
c = E k ( m ) = c 1 c 2 . . . c n ,其中 c i = ( k i + 25 − m i ) m o d   26 c=E_k(m)=c_1c_2...c_n,其中c_i=(k_i+25-m_i)mod\ 26 c=Ek(m)=c1c2...cn,其中ci=(ki+25mi)mod 26
例题和Vigenere体制的例题极其相似,不过就是将1+m变成1+25-m。

4.Hill体制——广义仿射密码的特例

密钥是变换矩阵, Z 26 Z_{26} Z26上的nxn阶可逆方阵 K = ( k i j ) n × n K=(k{ij})_{n\times n} K=(kij)n×n
加密算法: c = m K m o d   26 c=mK mod \ 26 c=mKmod 26解密算法: m = c K − 1 m o d   26 m=cK^{-1} mod \ 26 m=cK1mod 26
逆矩阵的求解线性代数有相关的知识,如果不懂如何求解的可以去查看线性代数相关逆矩阵求解的知识。
例题:设n=2,密钥为 K = ( 11 8 3 7 )    K= \begin{pmatrix} 11 &8 \\3&7 \end {pmatrix} \ \ K=(11387)  根据求解逆矩阵可以得出 K − 1 = ( 7 18 23 11 )    K^{-1}= \begin{pmatrix} 7 &18 \\23&11 \end {pmatrix} \ \ K1=(7231811)  设明文Hill,根据字母表对应出的数字得到明文向量(7,8)(11,11),根据解密算法得 ( 7 , 8 ) × ( 11 8 3 7 )    = ( 77 + 24 , 56 + 56 ) = ( 23 , 8 ) (7,8)\times \begin{pmatrix} 11 &8 \\3&7 \end {pmatrix} \ \ =(77+24,56+56)=(23,8) (7,8)×(11387)  =(77+24,56+56)=(23,8) ( 11 , 11 ) × ( 11 8 3 7 )    = ( 121 + 33 , 88 + 77 ) = ( 24 , 9 ) (11,11)\times \begin{pmatrix} 11 &8 \\3&7 \end {pmatrix} \ \ =(121+33,88+77)=(24,9) (11,11)×(11387)  =(121+33,88+77)=(24,9)故密文为(23,8)(24,9),转成密文字母为XIYJ。此处都要进行模运算


结束语

以上就是有关密码学的几种古典密码体制的简单总结,希望能对读者们起到一定的作用。
如果存在错误欢迎在评论区指出,可以多多交流哇,大家一起进步。
后续会再出一篇有关Hill密码体制解题的详细解题过程以及Hill密码体制下已知C和M求解密钥矩阵K的解题步骤。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值