一.单表置换密码
单表置换密码也是一种传统的代替密码算法,在算法中维护着一个置换表,这个置换表记录了明文和密文的对照关系。当没有发生加密(即没有发生置换)之前,其置换表如 1-1-4所示。
表1-1-4
在单表置换算法中,密钥是由一组英文字符和空格组成的,称之为密钥词组,例如当输入密钥词组:I LOVE MY COUNTRY后,对应的置换表如表 1-1-5所示。
表1-1-5
在表1-1-5中 ILOVEMYCUNTR 是密钥词组 LOVE MY COUNTRY 略去前面已出现过的字符O和Y依次写下的。
后面ABD……WXZ则是密钥词组中未出现的字母按照英文字母表顺序排列成的,密钥词组可作为密码的标志,记住这个密钥词组就能掌握字母加密置换的全过程。
这样对于明文:data security has evolved rapidly,按照表1-1-5的置换关系,就可以得到密文:VIKI JEOPHUKX CIJ EQDRQEV HIFUVRX。
二.Kaiser(恺撒)密码
Kaiser密码是传统的代替加密法,当没有发生加密(即没有发生移位)之前,其置换表如 1-1-1所示。
表1-1-1
加密时每一个字母向前推移k位,例如k=5,置换表如1-1-2所示。
表1-1-2
于是对明文:data security has evolved rapidly
可以得到密文:IFYF XJHZWNYD MFX JATQAJI WFUNIQD
若令26个字母分别对应整数 0 ~ 25,如表 1-1-3所示。
表1-1-3
则Kaiser加密变换实际上是
c = (m + k) mod 26
其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也称为密钥。
很容易得到相应的Kaiser解密变换是:
m = D(c) = (c – k) mod 26
例如明文:data security 对应的数据序列:
3 0 19 0 18 4 2 20 17 8 19 24
k = 5 时得到密文序列:
8 5 24 5 23 9 7 25 22 13 24 3
对应的密文为:
I F Y F X J H Z W N Y D