解密者首先會計算出金鑰的長度,這步工作甚至是在他要考慮金鑰的具體內容是什麼之前所要做的。
巴貝奇的獨具創意的技巧開創了一片密碼術的新天地,並且將數學工具引入到了以前被認為專屬於文字學的領域之中。即使一種編密碼系統沒有明確地使用數學,但其中隱藏的格式卻通常需要以數學的方式進行整理。
之後又過了九年,在一八六三年,一位業餘數學愛好者、時年五十八歲的普魯士退役炮兵少校弗里德里希·卡西斯基(Friedrich Kasiski)出版了一本小冊子,名字叫《密寫和破譯的藝術》(Die Geheimschriften und die Dechiffrierkunst)。簡單描述一下它的原理:被加密方指定的這個數列,也就是金鑰,在實踐中不可能是無限長的;在通常情況下,它的長度不僅不會超過明文長度,甚至往往還相當短——在斯維提斯的例子中,金鑰“Emily”的長度是五位,也就是說,每加密五個明文字母,就要迴圈使用“Emily”,對後面的明文字母繼續加密。
“迴圈使用金鑰進行加密”——整個多表替代的破綻和死穴,也正在這裡。
首先,破譯的第一步就是尋找密文中出現超過一次的字母。有兩種情況可能導致這樣的重複發生。最有可能的是明文中同樣的字母序列使用金鑰中同樣的字母加了密;另外還有一種較小的可能性是明文中兩個不同的字母序列透過金鑰中不同部分加了密,碰巧都變成了密文中完全一樣的序列。假如我們限制在長序列的範圍內,那麼第二種可能性可以很大程度地被排除,在這種情況下,我們多數考慮到四個字母或四個以上的重複序列。
破譯的第二步是確定金鑰的長度,先看看這一段:
關鍵詞F O R E S T F O R E S T F O R E S T F O R E S T F O R
明文b e t t e r t o d o w e l l t h a n t o s a y w e l l
密文G S K X W K Y C U S O X Q Z K L S G Y C J E Q P J Z C
第一個YC出現後到第二個YC的結尾一共有12個字母(USOXQZKLSGYC),
那麼金鑰的長度應是12的約數——1,2,3,4,6,12之中的一個(其中,1可排除)。
如下面的密文:
ISYYYJKAYYEZFFSWEESSPGZXQAHF
ISTVYJOACVEHAESAZRLTPQIZMXOT
QSWMCVUDSIJGGDEUWAZRSFXWILKUEJQLDACB
GDLYJXMYLMDQKZMPLDILQEMWFSWDPAZEZQNW
DYWDZXFSAEEAZJDUELVPTMCEKWSEEFURZFSW
DPXACQAFKMXWAWVEZFSDBGDLAYUQXGDPEKWS
EEFURZFSJTQYGUVA
ZOGRJZAHQAFKTJDKAD
MNQGWDVFAHLTLL
USSPXAZPGZJGGOSDCWITL
TEZMEDAZCAYQAFJRLUQLKUQQAFJQYWHPJTFJ
FLKUQQAFJQYWHPJPZOZDZMWDUMWFSWAYWRZJ
KZMISGBTFOSEEJGGDGREDKMMFDMDPARQJAHF