替代密码可以用字母来替代字母,也可以用图形符号来替代字母,或者用字母来替代图形符号。每个符号都用其他符号替换,并且替换始终不变的密码被称为单一字母替代密码。
这里,只介绍几种常见的单一字母替代密码,都是字母与字母之间的替换。如果明文和密文都用英文字母来表示,字母表由26个符号组成,则该字母表存在26!种单一字母替代密码。虽然数字惊人,但可以通过分析得出这些密码都是不安全的。
一般的单一字母替代密码以26个英文字母的集合上的一个代换π为密钥对明文消息中的每个字母依次进行变换,如K={π∶Z26→Z26π是代换},变换的方法是把明文中的每个字母用它在π下的像去替换。解密时用π的逆代换π-1进行替换。
【例2-1】 设代换π的对应关系如下
从代换π的对应关系可知
因此以代换π为密钥对security加密得到密文
ufmjtpyg
一般的单一字母替代密码的安全性在于:密钥π不便记忆,密钥空间K很大,K=26!=4×1026,破译者穷举搜索计算不可行,1μs试一个密钥,遍历全部密钥需要1013年。
1.Caesar密码
Caesar密码是由Julins Caesar发明的,它非常简单,就是对字母表中的每个字母,用它之后的第3个字母来代换成密文,这里的密钥k=3。如果密钥空间K={0,1,2,…,25},即k∈Z26,就成为移位密码,Caesar密码是移位密码的一个特例。
移位密码的加密和解密算法如下:
加密算法
Ek(m)≡m+k(mod 26)
解密算法
Dk(c)≡c-k(mod 26)
【例2-2】 设明文为security,试用Caesar密码对其进行加密,然后再进行解密。
(1)加密过程
如果让26个英文字母与整数0,1,2,…,25一一对应,如表2-1所示,那么security对应的数字为
18 4 2 20 17 8 19 24
如将数字18使用加密算法进行加密
E3(18)≡18+3(mod 26)≡21
相应地,对每个数字依次加密后得到的数字为
21 7 5 23 20 11 22 1
将这些数字转换为英文字母成为密文vhfxulwb。
(2)解密过程
vhfxulwb对应的数字为
21 7 5 23 20 11 22 1
如将数字21使用解密算法解密
D3(21)≡21-3(mod 26)≡18
转换为英文字母s。相应地,对每个密文数字依次解密为数字
18 4 2 20 17 8 19 24
转换为英文字母得到明文security。
如果已知某给定的密文是Caesar密码,由于加密和解密算法公开,且明文所用的语言有意义易于识别,只要简单地测试所有26种可能的密钥,那么穷举攻击密码学分析是很容易实现的。所以Caesar密码仅含26个置换作为密钥空间,是很不安全的。
表2-1 字母与数字映射表
2.仿射密码
Caesar密码被认为是一种加法密码,因为它将明文字母转换后的数字和常数3以模26相加而生成密文。还可以使用乘法密码,在乘法密码中,通过对明文字母转换后的数字和密钥k进行以26为模的乘法,明文字母就会转换为密文字母。(www.xing528.com)
仿射密码就是将加法密码和乘法密码组合而成的一种密码。它的密钥空间为
K={(k1,k2)k1、k2∈Z26}
加密和解密算法可以如下表达:
加密算法
c≡k1m+k2(mod 26)
解密算法
m≡(c-k2)k1-1(mod 26)
其中:k1k1-1≡1(mod 26)
【例2-3】 假设k1=9,k2=2,明文字母为w,用仿射密码对其加密和解密。
加密时,先把明文字母w转换为数字22,由加密算法得
再把数字18转换为字母得到密文s。
解密时,先计算k1-1。有9×3≡1(mod 26)
可以得出k1-1≡3(mod 26)。
再由解密算法得
数字22对应的明文字母为w。
仿射密码要求(k1,26)=1;否则,就会有多个明文字母对应一个密文字母的情况。由于与26互素的整数有12个,故仿射密码密钥空间的大小为K=12×26=312。
3.Playfair密码
Playfair密码使用一个字母矩阵作为替换表,将明文中的每两个字母看做一个单元,并将这些单元转换为密文字母组合。
Playfair密码基于一个5×5的字母矩阵。字母矩阵的构造方法同密钥短语密码类似,即选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母i,j占同一个位置。
【例2-4】 设密钥K=information security,去除重复字母后
K=informatsecuy
可得密钥字母矩阵如图2-1所示。
图2-1 密钥字母矩阵
对每一明文字母对m1、m2的加密方法如下:
●m1和m2在同一行,则密文c1和c2分别为紧靠m1、m2右端的字母,其中第一列被看做是最后一列的右方。
●若m1和m2在同一列,则密文c1和c2分别为紧靠m1、m2下方的字母,其中第一行被看做是最后一行的下方。
●若m1和m2不在同一行,也不在同一列,则密文c1和c2是由m1、m2确定的矩形的其他两角的字母,并且c1和m1,c2和m2同行。
●若m1=m2,则插入空字母或约定字母(如q)于重复字母之间。
●明文字母数为奇数,将空字母或约定字母(如q)加在明文的末端。
【例2-5】 使用Playfair密码加密明文computer,此时密钥K=information security。
先将computer中的字母两两分组为
co mp ut er
再根据密钥矩阵和加密规则,得到的密文为
bi eg ya de
Playfair密码的规则意味着一个字母不会被加密为其本身。另外,如果字母对“se”被加密为“dh”,则相反的字母对“hd”就会被加密为相反的“es”。这两个特性降低了Play-fair密码的安全性,通过查看字母对在密文中出现的频率并尝试将这些字母对与英语中常用的双字母组合相匹配,可以破译Playfair密码。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。