密码学——几种典型的古典密码体制(Caesar体制Playfair体制Vigenere体制Beaufort体制以及Hill体制)
Posted 努力敲代码的小盆友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码学——几种典型的古典密码体制(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= \\beginpmatrix 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属于同一行,故选择下方的字母st
故密文为:Bs dw ks st
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
简单地颠倒顺序 例:are 变为rea 将代换和置换操作混合使用,复杂程度更高。 以上是关于密码学——几种典型的古典密码体制(Caesar体制Playfair体制Vigenere体制Beaufort体制以及Hill体制)的主要内容,如果未能解决你的问题,请参考以下文章
例题: 密钥为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→信息论基础与古典加密技术
经典代换密码(Substitution Cipher)
Caesar密码--26位字母移位操作
单表代换密码--代换表
Playfair密码
Hill密码
多表代换密码 Vigenère Cipher
置换密码(Transposition/Permutation Cipher)
代换+置换加密