(1)符号码
符号码是以可见的方式,如手写体字或图形,隐藏秘密的书写。在书或报纸上标记所选择的字母,比如用点或短划线,这比上述方法更容易被人怀疑,除非使用显隐墨水,但此方法易于实现。一种变形的应用是降低所关心的字母,使其水平位置略低于其他字母,但这种降低几乎让人觉察不到。
(2)公开代码
一份秘密的信件或伪装的消息要通过公开信道传送,需要双方事前的约定,也就是需要一种公开代码。这可能是保密技术的最古老形式。在古代东方及远东的商人和赌徒在这方面有独到之处,他们非常熟练地掌握了手势和表情的应用。在美国的纸牌骗子中较为盛行的方法有:手拿一支烟或用手挠一下头,表示所持的牌不错;一只手放在胸前并且跷起大拇指,意思是“我将赢得这局,有人愿意跟我吗?”;右手手掌朝下放在桌子上,表示“是”,手握成拳头表示“不”。特定行业或社会阶层经常使用的语言,往往被称为行话。一些乞丐、流浪汉及地痞流氓使用的语言还被称为黑话,它们是这些社会群体的护身符。其实也是利用了伪装,伪装的秘密因此也称为专门隐语。曲波的长篇小说《林海雪原》中写到杨子荣进威虎山时,记载了很多。像“蘑菇溜哪路?什么价?”、“天王盖地虎,宝塔镇河妖”,等等,就是东北土匪一种黑话。法语中黑话也有很多例子,其中有的现在还成了通俗用法。比如rossignol(夜茑)表示“万能钥匙”,最早始于1460年;mouche(飞行)表示“告密者”,等等。
公开代码的第二种类型就是利用虚码和漏格进行隐藏。隐藏消息的规则比较常见的有:“某个特定字符后的第几个字符”,比如空格后的下一个字母(“家庭代码”,二战中在参战士兵中广为流传,但引起了审查机关的极大不满);更好一点的还有空格后的第三个字母,或者标点符号后的第三个字母。
漏格方法可以追溯到卡达诺(Cardano,1550年)时代,这是一种容易掌握的方法,但不足之处是双方需要相同的漏格,特别是战场上的士兵,使用时不太方便。
单表代替
多名码代替
多音码代替
多表代替
由1586年法国亨利三世王朝的外交官布莱瑟·维吉尼亚(Blaise Vigenère)发明的、著名的维吉尼亚(Vigenère)密码。
密本
维吉尼亚密码是如何加密和解密的呢?
例如,如果明文为:shanghai expo,密钥为:THEDANCINGMEN,密文是什么?
明文的第一个字母为s,则先在表格中找到第s列。由于密钥的第一个字母为T,于是在s列从上往下找到T。这一T对应的行号为B,因而B便是密文的第一个字母。以此类推可以得到密文。以下便是密钥为福尔摩斯侦探电影名字《The dancing men》时的例子:
明文:SHANGHAIEXPO
密钥:THEDANCINGMEN
密文:BAEQUGCAJJXQ
解密时,以密钥字母选择列,从表中找到密文字母,那么密文字母所在的行的行名就是明文字母了。如要解密密文中第一字母“B”,在表中找到“B”行中对应的密钥“T”,“T”对应的列“S”就为明文。
从上例中可以看到,对于同一个明文字母,由于在明文中的位置不同,将得到不同的密文字母。例如,明文中的字母“H”可能对应的密文字母有“A”、“G”,这样就在密文中消除了明文中字母出现频率的规律了。
采用一个字符串“SECURITY”为密钥,把明文“Electoral Law revision key to equal rights”进行列换位加密。
在列换位加密算法中,将明文按行排列到一个矩阵中(矩阵的列数等于密钥字母的个数,行数以够用为准,如果最后一行不全,可以用A、B、C…填充),然后按照密钥各个字母大小的顺序排出列号,以列的顺序将矩阵的字母读出,就构成了密文。
密钥:SECURITY
明文:Electoral Law revision key to equal rights
密文:EAOQTLLIEHOEELBTRKAAELSOGRBYRCCWNUSAITID