代替密码,指每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。
简单代替密码
简单代替密码就是将明文字母表肘中的每个字母用密文字母表C中的相应字母来代替。这一类密码包括移位密码、乘数密码、仿射密码、多项式代替密码以及密钥短语密码等。加密前一般首先要对字母表中的每个字母按照其位置进行编号,如用0,1,2,…,25分别表示英文字母a,b,c,…,z。
(1)移位密码。将明文字母表M的字母右移k个位置并对明文字母表长度q取模得到密文字母,是最简单的一类代替密码,其加密变换可表示为: ,解密变换为: ,其中q为字母表M的长度,m为明文字符在字母表M中的位置,c为密文字母在字母表C中的位置。移位密码就是对英文26个字母进行移位代替的密码,其中q=26。这种密码又被称为凯撒密码,因为古罗马的凯撒曾使用过k=3时的这种密码。例如,使用凯撒密码加密,可将明文university加密成密文qlyhuvlwb。
(2)乘数密码。将明文字母乘以密钥k并对q取模得到密文字母。加密过程可表示为:
其中k和q为互素的,这样字母表中的字母会产生一个复杂的剩余集合。若k和q不互素,则会有一些明文字母被加密成相同的密文字母,而且不是所有的字母都会出现在密文字母表中。
(3)仿射密码。明文字母经过线性变换得到密文字母,加密的形式为:
其中要求和q是互素的,理由同上。
简单代替密码由于使用从明文到密文的单一映射,所以明文中单字母出现频率分布与密文中相同,可以很容易地通过使用字母
频率分析法进行破译。
多名或同音代替密码
在同音代替中,一个
明文字母表的字母a,可以变换为若干个密文字母,称为同音字母,因此,从明文到密文的映射的形式是,其中A,C分别为明文和密文的字母表。
例:假定一个同音代替密码的密钥是一段短文,该文及其中各个单词的编号,如下所示:
(1)Canada’S large land mass and
(6)Scattered population make efficient communication
(11)a necessity.Extensive railway,road
(16)and other transportation systems,as
(21)well as telephone,telegraph,and
(26)cablenetworks,have helped to
(31)link communities and have played
(36)a vital part in the
(41)country’s development for future
在上表中,每一个单词的首字母都和一个数字对应,例如字母C与数字1,10,26,32,4l对应;字母M和数字4,8对应等,加密时可以用与字母对应的任何一个数字代替字母,例如,如果明文为I Love her forever的密文可能是:
39 2 17 37 9 28 9 14 43 17 14 13 37 13 14
多表代替密码
大多数多表代替密码是
周期代替密码,当周期为1时,就是单表代替密码。多表代替密码的种类很多,这里只介绍其中的Vigenere密码和游动钥密码。
在Vigenere密码中,用户钥是一个有限序列,我们可以通过周期性(周期为d)将k扩展为无限序列,其中Ki=K(i mod d),1≤i≤,从而得到工作钥。
如果用Φ和θ分别表示密文和明文字母,则Vigenere密码的变换公式为:
Φ≡()(mod n)
该密码体制有一个参数n。在加解密时,同样把英文字母映射为0~25的数字再进行运算,并按凡个字母一组进行变换。明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合。
多字母代替密码
明文中的字符块成组被加密,这里介绍一种
第一次世界大战使用过的二字母组代替密码(Play fair密码)、它的密钥是由25个英文字母(J被除去)组成的五阶方阵。
每一对明文字母和,都根据以下5条规则进行加密:
(1)若和在密钥方阵中的同一行,则密文字母和分别是和右边字母(第一行看作在第五行的下边)。
(2)若和在同一列,则和分别是和右边的字母(第一行看作为第五行的下边)。
(3)若和在密钥方阵中的不同行和列,密文字母和分别是以和为顶点组成的长方形中的另两个顶点,其中和、和分别在同一行。
(4)若=,则在和之间插进一个无效字母,例如X。
(5)若明文信息共有奇数个字母,则在明文末尾附加一个无效字母。