替换式密码的谐音替换法
早期的加密中,为增加替换式密码应付频率分析攻击的强度,有时会采用“谐音”来改变明文字母频率。在这种加密算法中,明文字母可以映射到多个密文符号。通常情况下,频率最高的明文符号(如E)会比低使用频率的字母(如X)有更多的谐音符号,使频率分布更为平坦,让分析更困难。
但亦因此,只是字母之间互相替换就会造成不够分配,从而有了好几种不同的解决方法。其中最简单的方式可以算是用1-0***10个数字作为某些字母的替换。另一种方法则是将现有的字母分开成原字母配以简单的变化、大写、小写、上下倒转的字母、镜像文字(左右倒转)等。虽然更为艺术化,却不代表一定更安全,其中一些谐音替换法全部使用新发明的奇特符号来代表字母。
一种有趣的变化名为命名密码法(英语:nomenclator)。此加密法有许多不同的版本,之间的区别来自其前缀。而该前缀来自宣读来访贵宾称号的公职人员名字。这种密码结合一个小型密码本(英语:Codebook)组成一个大型的谐音替换表。在此密码中,常用单词会按密码本加密,余下字母则按另一本密码本加密,两者符号最后在密文中混起来,以减低简易替换密码中被破解的风险。路易十四所使用的密码是罗西诺尔家族(英语:Rossignols)创立的伟大密码,该密码直至法国王室废止后百年才被破解。
15世纪早期至18世纪后期,命名密码是外交文件及间谍最常使用的加密,然而其中大多数仍然使用加密性能较差的命名密码。虽然由十六世纪中叶开始政府情报机构的密码分析员就破解部分命名密码法,但使用者通常的反应仅仅是加大谐音替换表。十八世纪后期,谐音替换系统开始消亡之时,一些命名密码已有高达5万个符号。
然而,并非所有命名密码法都已被破解。直到今天,仍然不时有新的命名密码被破解的新闻。
比尔密码是另一个谐音替换法的例子。这个故事指在1819年至1821年期间由一个加密文本来隐藏美国独立宣言中所述的宝藏。在这里,每个密文字符由一个数字替换。数字代表着独立宣言中第几个字的第一个字母。独立宣言中许多字的首字母都是一样的,而密文数字能是其中任何一个,例如正文中第二和第六个字都是“I”开头,即“I”既可以是2,又可以是6。而解读仅仅就是把密文中的数字(如代数X),放到独立宣言中查找(第X个字的首字母)。
斯塔尔则描述了另一个谐音替换密码,其密码是第一次尝试在电脑的数据库上加密。在斯塔尔的方法中,无论是明文还是密文都是以二进制字符串存储,因此谐音的数量可以非常大,使得频率分析比平常更为困难。
书本式加密(英语:Book cipher)与散列板都是谐音替换密码的一种。