5.1 古典密码学
已有两千多年历史,主要应用于军事、外交和情报领域。其安全性是基于算法的,类似于目前常用的编码算法。古典密码编码算法主要有两类:置换和代换。
5.1.1 置换密码
把明文字符串中的字母重新排列,字母本身不变,位置却改变了,由此编成的密码称为置换密码。最简单的置换密码是把明文中的字母倒序排列。
《失落的密符》中追寻宝藏得到一串字符串"YUOEMSTDIINHREKY"。解密需要一个幻方(magic square),如图13所示。
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
图13 幻方
解密时将字符串填到幻方中,再对照幻方中对应的数字,按从小到大的次序写下字母。解密得到"YOUR MIND IS THE KEY"。[20]
解密过程如图14所示。
图14 解密过程
5.1.2 代换技术
5.1.2.1 Caesar 密码
代换密码是将明文中的字符替代成其他字符,比如古罗马凯撒密码将明文中的所有字母都在字母表上向后(或向前)按照一个固定位数进行偏移,得到的新数据就是密文。位数就是凯撒密码加密和解密的秘钥[21]。
对字母表中的每个字母用它之后的第3个字母来代换。一个示例如下。
图15 Caesar 密码的实现代码
运行效果:
The original string is MEET ME AT BIGTREE NINE AM
The encrypted string is PHHW PH DW ELJWUHH QLQH DP
The restored string is MEET ME AT BIGTREE NINE AM
5.1.2.2 单表代换密码
一个字母用26个字母的任意置换,这种方法称为单表代换密码。一个示例的流程图如图16所示。
图16 单表代换密码的一个示例流程图
一个示例的流程图如图16所示。
图17 单表代换密码的实现代码
运行效果:
The original string is MEET ME AT BIGTREE NINE AM
The encrypted string is MXXP MX RP UDKPNXX JDJX RM
The restored string is MEET ME AT BIGTREE NINE AM
5.1.2.3 多表代换密码
在明文消息中采用不同的单表代换[22],特征是:
采用相关的单表代换规则集;
秘钥决定给定变换的具体规则。即由秘钥决定使用哪一张单表进行替换。