密码学——几种典型的古典密码体制(Caesar体制、Playfair体制、Vigenere体制、Beaufort体制以及Hill体制)
本篇文章将对几种典型的单表、多表古典密码体制进行总结,其中包括单表密码体制的Caesar体制、Playfair体制和多表密码体制的Vigenere体制、Beaufort体制以及Hill体制。并展示部分体制对应的简单例题,从而使读者更加容易理解古典密码体制是如何加减密的。
本篇文章将对几种典型的单表、多表古典密码体制进行总结,其中包括单表密码体制的Caesar体制、Playfair体制和多表密码体制的Vigenere体制、Beaufort体制以及Hill体制。并展示部分体制对应的简单例题,从而使读者更加容易理解古典密码体制是如何加减密的。
文章目录
引入
为了方便起见,将引入英文字母表和 Z 26 Z_{26} Z26对应关系表,以此来表示字母的符号同时也将表示字母所对应的整数。
a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
n | o | p | q | r | s | t | u | v | w | x | y | z |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
一、单表古典密码体制
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=c−3 mod 26 密钥:3
Caesar密表
a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|
d | e | f | g | h | i | j | k | l | m | n | o | p |
n | o | p | q | r | s | t | u | v | w | x | y | z |
p | r | s | t | u | v | w | x | y | z | a | b | c |
浅显一点就是 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)→0→c=0+3=3→d(3对应的字母就是d)
2.标准字头密码体制——单表置换密码体制
利用一个密钥字来构成置换作为密钥,比如密钥字选则cipher,故密表如下所示。
a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|
c | i | p | h | e | r | a | b | d | f | g | j | k |
n | o | p | q | r | s | t | u | v | w | x | y | z |
l | m | n | o | q | s | t | u | v | w | x | y | z |
浅显一点就是选择一个单词作为密钥放在首部,后面的明文字母所对应的密文字母不会包括前面首部的单词中的字母。未包含在密钥字的字母就按着顺序进行对应明文字母。
二、多表古典密码体制
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
m1,m2在密钥矩阵中为同一行,则密文
c
1
,
c
2
c_1,c_2
c1,c2分别为紧靠
m
1
,
m
2
m_1,m_2
m1,m2右端的字母。第一列为最后一列的右边。
②
m
1
,
m
2
m_1,m_2
m1,m2在密钥矩阵中为同一列,则密文
c
1
,
c
2
c_1,c_2
c1,c2分别为紧靠
m
1
,
m
2
m_1,m_2
m1,m2下方的字母。第一行为最后一行的下方。
③
m
1
,
m
2
m_1,m_2
m1,m2在密钥矩阵中为既不同行也不同列,则密文
c
1
,
c
2
c_1,c_2
c1,c2分别为由
m
1
,
m
2
m_1,m_2
m1,m2确定的矩形上的其他两个角上的字母。其中
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
U→20→1+20=21→V
n
→
13
→
14
+
13
=
27
=
1
→
b
n\to 13\to 14+13=27=1\to b
n→13→14+13=27=1→b
i
→
8
→
24
+
8
=
32
=
6
→
p
i\to 8\to 24+8=32=6\to p
i→8→24+8=32=6→p…中间过程省略…每三个为一组,每一个对应着不同的算法,以1+,14+,24+为一组
y
→
24
→
1
+
24
=
25
→
z
y\to 24\to 1+24=25\to z
y→24→1+24=25→z最终结果为: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+25−mi)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=cK−1mod 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} \ \
K−1=(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的解题步骤。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)