代换密码(substitution cipher):就是明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。
置换密码(permutation cipher),又称换位密码(transposition cipher):明文的字母保持相同,但顺序被打乱了。
置换只不过是一个简单的换位,每个置换都可以用一个置换矩阵Ek来表示。每个置换都有一个与之对应的逆置换Dk。置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。
古典加密算法:置换密码
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack
begins
at
five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:
a
t
t
a
c
k
b
e
g
i
n
s
a
t
f
i
v
e
根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:
1
2
3
4
5
6
f
=
1
4
5
3
2
6
根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式:
a
a
c
t
t
k
b
i
n
g
e
s
a
i
v
f
t
e
从而得到密文:aacttkbingesaivfte
①加法密码
A和B是有 n个字母的字母表。
定义一个由A到B的映射:f:A→B
f(ai )= bi=aj
j=i+k mod n
加法密码是用明文字母在字母表中后面第 k个字母来代替。
K=3 时是著名的凯撒密码。
恺撒密码——历史上第一个密码技术
“恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》)。
②乘法密码
A和B是有n个字母的字母表。?定义一个由A到B的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。注意:只有(n,k)=1,才能正确解密。
③密钥词组代替密码
随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。然后按列取出字母构成密文字母表 单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。可以利用频率分析来破译。故产生了更为安全的多表代换密码,即构造多个密文字母表,在密钥的控制下用以一系列代换表依次对明文消息的字母序列进行代换。著名的多表代替密码有Vigenere密码等。
① Vernam密码
明文、密文、密钥都表示为二进制位:
M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cn
②Playfair密码
用密钥控制生成矩阵,然后每两个字母为单位进行代换。
③Hill密码(乘积密码)
建立在矩阵相乘的基础上,但不能抵抗已知明文攻击。
举例:周期为e的换位将明文字母划分。
换位密码就是一种早期的加密方法,与明文的字母保持相同,区别是顺序被打乱了。
古典密码:
从远古到1949年香农发表《保密系统的通信理论》,这期间人类所使用的密码均称为古典密码,本文主要介绍三种古典密码,分别为置换密码,代换密码和轮换密码。
置换密码(又称为换位密码):
是指明文中各字符的位置次序重新排列得到密文的一种密码体制。
特点:保持明=文中所有的字符不变,只是利用置换打乱明文字符的位置和次序。
置换定义:有限集X上的运算σ:X→X,σ是一个双射函数,那么称σ为一个置换。
即任意x∈X,存在唯一的x’∈X,使得σ(x)=x’。
解密的时候会用到逆置换σ’,即任意x’∈X,存在唯一的x∈X,使得σ’(x’)=x且满足σσ’=I。
对置换有了一个基本的认识之后我们来谈一下置换密码,置换密码有两种,一种为列置换密码,一种为周期置换密码。
列置换密码:
列置换密码,顾名思义,按列换位并且按列读出明文序列得到密文,具体加密步骤如下:
将明文p以固定分组长度m按行写出nxm阶矩阵(若不m倍数,空余部分空格补充)。
按(1,2,3…m)的置换σ交换列的位置,σ为密钥。
把新得到的矩阵按列的顺序依次读出得到密文c。
解密过程如下:
将密文c以固定的长度n按列写成nxm阶矩阵。
按逆矩阵σ’交换列的位置。
把矩阵按着行依次读出为明文。
周期置换:
周期变换密码是将明文P按固定长度m分组,然后对每组的字符串按置换σ重新排列位置从而得到密文。
周期排列与列排列思想是一致的,只不过列排列是以矩阵的形式整列换位置,而周期是在分组以后对每组分别变换。懂得列排列就可以很容易地理解周期排列。
代换密码(又称为替代密码):
就是讲明文中的每个字符替代成密文中的另一个字符,替代后的各个字母保持原来的位置,在对密文进行逆替换就可以恢复出明文。
代换密码有分为单表代换密码和多表代换密码。
单表代换密码我们分别介绍凯撒密码和仿射密码。
凯撒密码:
凯撒密码依据凯撒密码代换表对26个英文字母进行替换。