1 单表代替密码算法
密码算法如下:
实例2-1:
明文:the quick brown fox jumps over the lazy dog(这是著名的测试文本,明文便于记忆,短小且包含所有26个英文字母)。
整理:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG(上述明文-密文对照表中没有小写字母和空格符号,因此,在加密前要进行必要的整理)。
密文:VJGSWKEMDTQYPHQZLWORUQXGTVJGNCBAFQI。
整理:VJGSW KEMDT QYPHQ ZLWOR UQXGT VJGNC BAFQI。社会工程学研究表明,乱序英文字母,从视觉、听觉等感觉上,5个字母一组最合适,4个一组略显少,6个一组略显多。同理,乱序阿拉伯数字,4个一组最合适。
本例还可以从另一个角度看,如果将A、B、…、Y、Z编为数字0、1、…、24、25,则发现密文实际上是明文加2再模26,即:
密文=(明文+2)mod(26)
这可看成一种加减作业。加减作业是代替作业的一种特例,而且隐含着序列密码设计思想的雏形(下文还要涉及)。
理论上讲,可以构造出26!(26个英文大写字母的全排列, n != n ( n -1)( n -2)…3×2×1)个不同的单表代替的密码算法,其中包括一些“不好”的单表代替。比如,下面的单表代替就“不好”。
如果再加上小写英文字母和10个数字,那就是26+26+10=62,可以构造出62!个不同的单表代替的密码算法,其中也包括了一些“不好的”单表代替。当然还可以再加上各种标点符号等,以构成更大的单表代替的密码算法。
2 多表代替密码算法
密码算法如下:
约定第1个明文字母用密文1(也称为代替表1)代替,第2个明文字母用密文2代替,第3个明文字母用密文3代替,第4个明文字母用密文4代替,第5个明文字母用密文5代替,每5个字母一组。第6个明文字母又返回用密文1代替……以此类推,直至将明文完全加密。
实例2-2:
明文:the quick brown fox jumps over the lazy dog。
整理:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG。
密文:VMTWPKHZHMQBCLJZOJSKUTKKMVMTRVBDSTB。
整理:12345 VMTWP KHZHM QBCLJ ZOJSK UTKKM VMTRV BDSTB。
注意,这时的密文多了一组“12345”。多表代替密码算法提高了破译难度,但只要代替表有限,提高的难度并不大。