《福尔摩斯:跳舞的小人》(The Dancing Men,又译作“跳舞的人”)的故事发生于1898年,那是一个连现代计算机的概念都还没有提出的年代,福尔摩斯却凭借自己的智慧和推理,就破解了替换密码。
影片讲述的是英国富人希尔顿·库比特的妻子在庭院里看到一串跳舞小人的图案后极度害怕,在此之后一个多月库比特家中开始陆续出现跳舞的小人。
库比特先生希望能够保护他的妻子,并希望福尔摩斯能够破解跳舞的小人,就给福尔摩斯写了第一封信,同时附上了上面的小人。
两个星期后,丘比特先生在工具间的门上发现:
两天后:
三天后:
最后又发现:
福尔摩斯破解跳舞的小人密码画面:
解密过程
首先,每个小人代表一个字母,运用解读所有密码的套路,就能解开。
第一条信息
根据英文字母出现概率不同,破译密码。
英文中出现概率最高的字母,E概率依次向下为T,A,O,I,N,S,H,R,D,L
所以从第一条信息可知下图出现了4次。
所以代表E。这四个相同的小人中有的拿着旗子有的没拿,从分布来看,旗子可能是分隔符。现暂定这个假设。
因为T,A,O,I的使用率几乎不相上下,所以要根据其他的信息破解。
接下来,从第四条信息入手。
图中没有旗子,可能是个单词。先确定二和四是E,可以选择的答案有SEVER(切割),LEVER(杠杆),NEVER(永不)。该信息出现在第四说明可能用于回答。根据语境判断,应该是库比特太太的回复。如果上图为NEVER,说明第一个代表N,第三个代表V,第五个代表R。
通过人物信息,提出请求的人应该是埃尔西(Elsie)多年前认识的。
所以从第三条信息看出两个E中间夹三个字母的可能是她的名字,这样就对上了L,S,I。名字前还有四个字母,以E结尾的请求,得出为COME。
接着继续破解第一条信息,将每个单词根据拿旗小人分隔开。不确定的用点表示。
得 .M .ERE ..E SL.NE.
第一个字母只能是A,这样就换掉三个点。第二个单词也很明显,是H。
所以,这句话变成 AM HERE A.E SLANE.
最后两个词明显为名字,补充:
AM HERE ABE SLANEY
(我到了。艾贝 斯莱尼)
接下来破解第二条信息
按照上面得出的字母进行替换,得:
A. ELRI.ES
要使这句话有意思,只能用T和G 补上。
AT ELRIGES
(在埃尔里格)
最后看第五条信息。
用已知字母转换,变成:
ELSIE .RE.ARE TO MEET THY GO.
加上P和D,意思完整。
ELSIE PREPARE TO MEET THY GOD
(埃尔西,准备见上帝)
跳舞小人密码,归根结底是一个简单的替换密码,不过由于当时福尔摩斯并不知道跳舞小人码表,所以对于破解密码,一时间几乎难以下手。
如今在研究者的不断研究下,已经归纳出了一个完整的密码表,如下图所示:
从上表中,我们可以看到,每个英文字母分别用两个小人表示,其区别是其中一个小人手中没有旗帜,而另一个小人手中有旗帜,这个旗帜的作用是什么呢,它的作用就是用于分隔开单词。
前面已经说过,跳舞小人密码其实就是一个简单的替换密码,其加密方式是这样的,举个简单的例子:
我们要加密两个明文单词:Apple potatoes
首先我们在码表中,找出Apple potatoes的小人位置。
其中Appl用该字母代表的小人的第一个小人进行替换,也就是用没有旗帜的小人进行替换,而e则用该字母代表的小人的第二个字母进行替换,也就是那个手中有旗帜的小人。
接着我们继续在码表中找出potatoe代表的小人,然后用第一个小人进行替换,而s则用该字母代表的小人的第二个字母进行替换,也就是那个手中有旗帜的小人。
最终,我们加密后的密文为:
如果要加密数字,因为数字在码表中只有一个小人,因而可以直接进行替换。如果要破解跳舞小人密码,只需要将小人对照码表,替换回字母即可。