隐匿法的寿命这么长,表示这种方法确实很安全。不过,隐匿法有一个根本弱点,一旦敌人更加谨慎地搜查,情报就会曝光。于是人们在移位法和替代法的基础上,发明了新一代的加密方法,这种方法是由一位名叫维吉尼亚的法国外交官发明的,所以被称为「维吉尼亚加密法」。维吉尼亚加密法确实提升了密码的安全性。

密码学的第一个时代:密码的手工时代。
虽然我们把「密码」两个字放在一起说,但是实际上,人类是先花了很多时间研究「密」,之后才转而研究「码」。
秘密书信的历史其实非常悠远,不过,人们最早的思路,是想方设法把书信的内容直接隐藏起来。
有文献记载,公元前5世纪,希腊和波斯之间正在打仗。一位希腊人为了传递秘密信息,会把信息写在木板上,然后用一层蜡把木头盖住。收信人拿到木板之后,把蜡刮掉,就能看到秘密的信息。
希腊这边还用过更绝的方法,他们会把信使的头发剃光,把秘密信息写在信使的头皮上,等信使头发长出来之后再派他去送信,到地方再把头发剃了,收信人就能看到密信了。
这种直接掩盖信息的方法,被称为「隐匿法」。这是最早的加密手段,直到近现代还一直在使用。今天我们在看谍战片的时候,还会经常看到间谍们用隐匿法传递情报,像什么用隐形墨水写信,或者把信息塞进胶囊里再让特工吞下去,都是隐匿法。
隐匿法的寿命这么长,表示这种方法确实很安全。不过,隐匿法有一个根本弱点,一旦敌人更加谨慎地搜查,情报就会曝光。这就像是在玩捉迷藏的游戏,只要对方认认真真地去找,总是能找到一些蛛丝马迹。
于是,人们开始思考另一种方法,有没有可能,就算敌人找到了白纸黑字的信息,但是依然不明白我想说的是什么呢?
顺着这个思路,各种密码应运而生。
在密码的手工时代,诞生了花样繁多的密码,不过从原理上,基本可以分成两类,一类用的是「移位法」,另一类用的是「替代法」。
最简单的移位法,就是把每个字母都用后边一位的字母表示,这样,A就变成了B,B就变成了C,像是「得到」的拼音DEDAO就变成了EFEBP。别人如果看到,就会认为是毫无意义的单词,没法理解其中的含义。传说这样的方法,最早是由恺撒发明的,所以用移位法加密又被称为「恺撒式密码」。
另一种方法是替代法。先将字母随意配对,再用配对字母取代信息里的原始字母。比如我们可以指定用V代表A,用T代表B,因为替代的规则是人指定的,所以更加灵活,更难被破解。
不过,不管是移位法还是替代法,都有一个本质上的弱点。那就是这些用字母组成的拼音文字,每个字母出现的频繁程度是不一样的。比如在英文里边,字母A、字母E出现的频率,就远远高于字母X和字母Z。所以,不管用什么样的方式移位或者替代,只要是用一套加密方案进行加密,那么拿到密文之后,只要统计其中字母的频率,就能找到破解的方向。
于是人们在移位法和替代法的基础上,发明了新一代的加密方法,这种方法是由一位名叫维吉尼亚的法国外交官发明的,所以被称为「维吉尼亚加密法」。
维吉尼亚加密法的创新之处,在于给每个字母都设置一套加密算法。
字母A可以替换成A也可以替换成Z,一共26个字母,这就是26套加密方案。通信的双方需要约定一组数字,这样就知道每一位字母要用哪套加密方案了。
咱们还是拿得到的拼音DEDAO举例子,咱们约定一组数字,比如10086吧。这样,第一个字母D就替换成后一位的E,第二个字母E还是E,第三个字母D还是D,第四个字母A替换成后八位I,最后一位字母O替换成后六位的字母U,在10086这个方案下,DEDAO就被加密成EEDIU。
这个10086就叫作「钥匙」,拿到了钥匙,才能知道具体要如何解密。
维吉尼亚加密法确实提升了密码的安全性。不过,安全和方便往往是一对矛盾,维吉尼亚加密法提升了安全性,也提高了使用的门槛,比如咱们刚才是5个字母,所以钥匙也只需要5位数就够了。如果是一封几百个单词的长信呢?钥匙也要变得很长,那如何把钥匙顺利地交到别人的手上呢?这就出现了新的问题。
而且,在手工书写的时代,要记忆26套加密算法,不仅费时费力,而且容易出错。所以,维吉尼亚加密法虽然更加安全可靠,但是在手工加密的时代,并没有被广泛应用,直到机械时代来临,这种方法才开始大放异彩。
