公元前500年的古希腊人使用了一种著名的加密方法。它叫什么名字?
Scytale密码
历史上最早的密码学应用记录大约是在公元前5世纪。当时,古希腊的斯巴达人使用一种叫做scytale的棍子来传输加密信息。在《scytale》中,斯巴达人会在一张羊皮纸或皮革上盘旋。寄件人将相关信息横写在包裹好的羊皮纸上,然后撕下来,于是羊皮纸上出现了一些毫无意义的字母顺序。如果要解码这条信息,收信人只需将羊皮纸再次缠绕在一根直径相同的棍子上,就可以读出信中的内容。
有一个故事是这样的:公元前404年,斯巴达的吕山德遇到了一个从波斯回来的使者,他们五个人只有一个人从这段艰难的旅程中回来了。信使解下腰带,吕山德把它卷在镰刀上,读了信的内容,知道波斯人打算攻击他,并提前做了准备。
在我之前看过的一本书里,有另外一个版本(大多没有任何历史依据):古希腊有个奴隶要过一关,斯巴达人检查了一下,没发现什么问题。就在即将被释放的时候,一位将军突然发现奴隶的腰带上刻着字母,于是拿着腰带查看,发现这些字母杂乱无章,毫无头绪。当他无意中卷起皮带时,他发现了皮带上的秘密,突然间这些字母排列得很有规律。就这样,将军发现了敌人的阴谋,奴隶被处死了。
其实,scytale密码和栅栏密码本质上没有区别。
你可以试着用一张细长的长方形纸和一支六边形铅笔来写下scytale密码。举个例子,我写了一个句子,把纸拿下来之后,得到了下面的密文:
stte _ _ erh _ _ _ noe _ _ _ DOB _ _ _ MPR _ _ _ OSI _ _ _ RTD _ _ eog
Here _用来表示空格,因为铅笔只有六条边,所以我们知道有多少个空格。(通常可以省略空格,或者不知道到底有多少个空格。但是我们会发现,除非整个音符都是满的,否则总会有空格,这也给我们解码时的分段带来了方便。)因为这里已知密钥k=6,所以用六行(包括空格)分段得到如下外观:
stte_ _
erh_ _ _
日期:年月日
mpr_ _
osi_ _ _
rrtd_ _
eog
然后,从上到下,一列接一列,我们得到明文:sendmoretroopstothebridge
(向桥上增派部队)
这里有两个缠绕方向,一个左旋,一个右旋。如果纸条滚动的时候方向反了,比如写的时候是左手,读的时候是右手,那么这条信息的内容就会从右往左读。你可以试试。Xb1r2YD HV:i
另外,如果写成另一个缠绕方向,和上面这句话一样。取下纸条后,可能会得到如下密文:` VYF/L,ia F。
ETI _ _ _ RSR _ _ _ opb _ _ _ moe _ _ _ dohe _ _ nrtg _ _ etod _ _ sy5tkK!~gv
密钥k=6,所以还是用六行(包括空格)分段得到如下外观。
eti_ _ _
rsr_ _ _
opb_ _ _
moe _ _ _
nrtg_ _
etod_ _
s
这时候怎么才能得到明文呢?哈哈,另一方面,从下到上,一列接一列,你得到的是纯文本:
sendmoretroopstothebridge
给大家一个练习。
练习2。下面是我用一张纸包着一根火腿肠写的一句话,密文如下:
Toitdarwiuyhwghbdwsnt,我在这里省略了空格。你能破译它们吗?