密码学黑客:简单替换密码

上一篇文章讲到过凯撒密码,在这里重新回顾一遍,凯撒密码是每个字母按密钥的位数向后或者前推进若干位;

凯撒密码是通过将明文中所使用的字母表平移来生成密文的。但是,如果我们将字母表中的26个字母,分别与这26个字母本身建立一对一的对应关系,那么无论哪一种对应关系就都可以作为密码来使用。这种将明文中所使用的字母表替换为另一套字母表的密码称为简单替换密码。

替换式密码,又名取代加密法,是密码学中按规律将文字加密的一种方式。替换式密码中可以用不同字母数为一单元,例如每一个或两个字母为一单元,然后再作加密。密文接收者解密时需用原加密方式解码才可取得原文本。由于拼音文字中字的组成为有限的字母,以英语为例只有26个字母,组成可能的单元数较少,因此使用替换式密码相对较为容易,而且亦可使用简单机械进行加密;相反,非拼音文字如中文则因单元数非常大难以使用一般加密方式,必需建立密码本,然后逐字替换。更何况某些非拼音文字中字字皆由不同大小的字根来组字,较难转换,因此使用替换式密码的示例比较少。

简易替换密码

简易替换加密是一种以特定方式改变字母表上字母顺序,并以此顺序书写的加密方式。这样一张改变了字母次序的字母表即为‘替换表’。替换表可以以偏移或逆转(分别为凯撒密码和阿特巴希密码(英语:Atbash))或更复杂方式构造,此时称之为‘混合表’。传统上会先把一个关键词写在字母表最前面,再删去重复字母,这样就能得到一个混合表。

替换式密码例子

使用混合表系统,关键字为“zebras”:

明文为ABCDEFGHIJKLMNOPQRSTUVWXYZ;密文为ZEBRASCDFGHIJKLMNOPQTUVWXY。

明文为:flee at once. we are discovered;加密结果为:SIAA ZQ LKBA. VA ZOA RFPBLUAOAR。

传统上,密文会省略标点符号和空格,同时会有一固定长度的单位,以避免传输错误和变相显示明文中单词的边界。这些单位被称为“组”(英语:groups),有时叫“组数”(英语:groupcount)(即组的数量),并使其作为一额外检查。通常都会使用五个字母为一组,然后使用电报传送消息:

SIAAZ QLKBA VAZOA RFPBL UAOAR

如果该段明文的长度不能被五整除,将需要在最后用“NULL”补齐。这些空字符可以是任何字符,因为解密后可以看出是明显的废话(如ORANG EOOOO),所以接收器可以很容易地发现并将其丢弃。如若接收发现密文的长度不能被五整除,就可以得知传输出错,并要求重新发送。

简单替换密码就是每个字母按照字母表上的每个字母都发生变化,就不像凯撒密码那样容易被破解。

比如给 I love you 用简单替换密码加密:就成了U feag het(每同一个字母都发生了变化,这样都给破解难度大大增加)

如果要解密的话就用双方事先有的密码本进行一一解密,就还原成了明文。


分享到:


相關文章: