中文譯本 · 原作 Daniel Bourdeau《Unsolved Historical Ciphers》 以 CC BY 4.0 釋出,本頁由 JIC 翻譯,非原作者官方版本,譯文如有出入以英文原頁為準 · 檢視英文原頁 ↗
3 11 26 21 17 14 6 15 26 1 8 17
19 21 9 14 19 15 25 3 14 15 3
11 13 15 12 26 1 8 17 21 18

維也納 · 數碼替換密碼,每個母音對應兩個數碼 · 1644年

Fra Giovanni di Lucca 致斐迪南三世

斐迪南三世
收信人斐迪南三世

1644年5月30日 · Österreichisches Staatsarchiv, HHStA, Staatskanzlei Interiora, Chiffrenschlüssel Kt. 20 Fasc. 27 ff. 18–19 · DECODE R2159

二百三十一個以點分隔的數碼,內容為義大利語,DECODE 上沒有解讀;Tomokiyo 曾發表開頭幾個詞 · 以這幾個詞為猜詞復原了金鑰,全部231個數碼均已解密 · 已對照手稿核驗,其明文部分指明說話人是 Koniecpolski

Daniel Bourdeau · 釋出於 · 更新於

方法:外部明文復原金鑰 · 範圍:完整

摘要。S. Tomokiyo 的未解密碼頁面收錄了這一條目,並附言說它“可以解讀出 Al principe di trenti…”,“通曉義大利語的人應能完成解密”。他的轉錄似乎與這段猜詞相矛盾:principe 寫作 26 21 17 17 6 15 26 1,這樣數碼17就會在同一個詞裡既是 i 又是 n,而任何替換都不允許這種情況。因此第一輪工作把17(i 或 n)和19(t 或 s)當作多音替換。後來手稿影象顯示,書寫者帶橫畫的4在十個碼組中被轉錄成了17:每一個“17 = n”在原頁上都是14,而17只是 i。所以二十三個數碼各代表一個字母(a、e、o、u、i 各有兩個數碼)。剩下的數碼19六次是 s,而 s 沒有別的數碼;有三次它出現在應為 t 的位置。原頁上 Transiuania 中的兩處都是19,所以證據更傾向於書寫者加密時的筆誤,而非轉錄錯誤。這種密碼沒有多音數碼。金鑰的復原方法是:固定猜詞給出的、彼此不矛盾的八個字母,其餘十六個用義大利語5-gram 模型做模擬退火:每個隨機種子都得到同一個解密結果,而同樣的程式作用於五個打亂的密文則一無所獲。這段話向斐迪南三世轉達了一項提議,時值拉科齊入侵匈牙利的那個春天:阻止土耳其人援助特蘭西瓦尼亞親王,煽動摩爾達維亞親王起而反對他,提供兩千名哥薩克,並敦促皇帝在他被挫敗或被擊敗之前不要議和。密文周圍的明文點出了說話人:大蓋特曼 Stanisław Koniecpolski,在 Brody。狀態:完整,已對照手稿核驗(2026年9月22日)。三處筆誤(19 代 t)和兩處縮略拼寫保留書寫者原樣。

01 文獻

Tomokiyo 在他關於奧地利檔案中變長數碼程式碼的文章裡轉錄了這段密文(DECODE R2159、R1408、R2179 以及一封1758年的 Starhemberg 信)。他對這一件的說明是:Fra Giovanni di Lucca 致皇帝,1644年5月30日,義大利語;“數字組可能由一位或兩位數字構成,但識別單個數字組並無困難,因為各組之間以點分隔。”DECODE 的公開記錄寫著 Non-decrypted(檔案中無解讀),密碼型別 Unknown,符號集為數字,兩頁,部分加密,日期範圍是佔位用的1686–1877。影象需要登入 DECODE 才能檢視。第一輪的解密只依據 Tomokiyo 的轉錄;2026年9月22日,對照 f. 18r 的影象逐組核對了密文,把十個碼組從17訂正為14(§03)。下文是訂正後的文字。

3 11 26 21 17 14 6 15 26 1 8 17 19 21 9 14 19
15 25 3 14 15 3 11 13 15 12 26 1 8 17 21 18 6 13 14 18 2 14 12 13 8 18 6 10 1 15 11 22 25
21 6 18 14 13 14 11 17 8 15 9 3 15 23 22 13 1 5 9 21 18 21 15 25 13 11 19 3 32 7 6 18
14 22 21 9 8 17 11 25 15 19 7 19 3 21 9 4 15 19 13 2 14 18 17 11 26 21 17 14 6 15
26 1 8 15 4 18 2 13 8 3 14 17 9 7 22 11 17 8 3 21 13 8 23 12 17 11 15 3 6 18 19
9 6 10 15 7 22 12 3 14 8 1 21 13 9 25 18 17 6 13 14 23 14 3 19 25 9 11 7 22
1 21 3 9 11 15 12 26 7 21 3 22 13 21 7 6 10 7 14 18 14 5 3 6 15 9 26 3 6 7
5 17 14 6 10 7 14 18 14 11 10 3 4 17 10 25 12 17 11 15 9 19 13 18 23 15 14
22 18
一封義大利語信件,一行明文之後是八行以點分隔的一位和兩位數字
f. 18r,密文段落:它接在明文 della Religione e ragion di stato 之後,八行帶點的數碼,然後回到明文 tal cosa fin’ ora non è hauto effetto。這些數碼解密為 Al principe di Transilvania lo impedirò con ogni modo che il Turco non li dia aiuto … principe 和 con una 中帶橫畫的數字是書寫者的4,所以這個碼組是14而不是17。圖片:Österreichisches Staatsarchiv, HHStA, Staatskanzlei Interiora, Chiffrenschlüssel Kt. 20 Fasc. 27 f. 18r,來自 DECODE R2159。

231個碼組,24個不同的數碼(1–15、17–19、21–23、25、26、32),重合指數0.050。按最初的轉錄,恰好有一個重複對 17 17,在同一個詞裡出現兩次,正是它引出了下文第一輪工作的多音替換假說。在原頁上,這一對是 17 14:訂正後的文字根本沒有重複碼組,書寫者只是避免寫雙字母(Cosachi、dumilia、habi)。

02 復原金鑰

  1. 無約束的模擬退火失敗了。用義大利語5-gram 模型(Villari 的 Machiavelli e i suoi tempi、I promessi sposi、La Mandragola;410萬個字母,v 寫作 u)的同音替換模擬退火器,從十六個隨機種子出發執行。十六次全都收斂到同一個最優點, estreesitenetrentiuenieseist…,不是義大利語。求解器在一個與之匹配的231字母義大利語對照上,三個種子中有一個能復原,所以這只是說明搜尋地形平坦,並不構成證明。
  2. 按原轉錄,這段猜詞與替換密碼不相容。Al principe di = 3 11 | 26 21 17 17 6 15 26 1 | 8 17。由 di,以及文中稍後的 il = 17 11 可知,17是 i;而在 principe 中,第二個17必須是 n。有八個字母不產生矛盾:3 a、11 l、8 d、17 i、26 p、21 r、1 e、19 t。
  3. 固定猜詞的模擬退火。固定這八個、其餘十六個數碼自由,六個種子收斂到同一個解密結果,每個5-gram 為 −2.50 nats: alpriicipeditrantiuanialoimpediroconoinmodocheilturcononlidiaaiutoefaroriuoltase…:lo impedirò … che il Turco non li dia aiuto e farò rivoltare… 一個詞接一個詞都是義大利語,直到最後一個碼組。
  4. 在未訂正的轉錄上,有兩個數碼似乎各代表兩個字母(見金鑰後的說明)。其餘保持不變時,17在 principe(兩次)、manderò、con una、non、vinto 中解為 n,在 di、il、impedirò、li、lui、dumilia、finché 中解為 i;19在 Transilvania、rivoltare、sua、humiliato、vinto 中解為 t,在 Transilvania、se sarà bisogno、Cosachi 中解為 s。兩者都不需要第三個值。用同一模型對這兩組備選做 Viterbi 解碼,可以機械地完成每一處選擇,結果與人工解密一致,只有下文註明的兩處例外。
  5. 對照。在同一密文的五個打亂版本上(數碼相同、計數相同、固定同樣的八個字母)執行固定猜詞的程式,每個5-gram 只達到 −3.40 至 −3.68,而這封信為 −2.50,在227個5-gram 上相差約200 nats。第1步中無約束的偽最優點與真解密得分相同,所以模型本身挑不出答案。挑出答案的是八個猜詞字母,而打亂對照表明,在這段文字上固定八個字母本身並不能憑空製造出義大利語。

03 金鑰

123456789101112131415171819212223252632
egabfcedahlmoniiosrtuupr
731633131010126136132018141491484771

第三行:出現次數。數碼16、20、24和27–31沒有出現;文中沒有 q、z 和子音 v。排列沒有字母順序。b、g 和第二個 r 各只依據一到三次出現,所在的詞放不進別的字母(bisogno、Bogdania、habbi;ogni、bisogno、Bogdania;rivoltare)。

17不是多音數碼:已對照手稿核驗。第一輪工作提出,每個“17 = n”可能是被轉錄成17的14,因為在17世紀的筆跡中4和7很接近。f. 18r 的影象解決了這個問題。書寫者的4是帶橫畫的一筆,看起來像帶槓的7;他的7則是平常寫法。Tomokiyo 的轉錄在大多數地方把帶橫畫的4讀作14,但有十處讀成了17:principe 兩次(26 21 17 14 6 15 26 1)、manderò(12 3 14 8)、con una(6 13 14 23 14 3)、non 兩次(14 18 14)和 vinto(23 15 14 22 18)。原頁上每個平常寫法的17都是 i。Tomokiyo 的猜詞 Al principe di 從一開始就是對的。19是 s:它六次代表 s,而 s 沒有別的數碼。有三次它出現在應為 t 的位置(Transiuania、rivoltare、humiliato);既然原頁在 Transiuania 的兩處寫的是同一個數碼,這些更可能是書寫者本應寫22時的加密筆誤,而不是轉錄錯誤。19的兩種用法在字形上是否有差別,尚未核查。這種密碼沒有多音數碼。上面的金鑰是訂正後的:19是 s;應為 t 的三處是書寫者的筆誤。

04 解讀

Al principe di Transil[u]ania lo impedirò con ogn[i] modo che il Turco non li dia aiuto, e farò rivoltare contra di lui, se sarà bisogno, il principe di Bog[o]dania, et li darò dumilia Cosachi, et manderò a voi con una sua lettera all’Imperatore che non faccia pace fin che non l’habbi humiliato o vinto.
至於特蘭西瓦尼亞親王:我將千方百計阻止土耳其人援助他;如有必要,我將使摩爾達維亞親王起而反對他,並給他兩千名哥薩克;我還將[他]連同他致皇帝的一封信派到您那裡,請皇帝在我挫敗或擊敗他之前不要議和。

05 背景

1644年2月,特蘭西瓦尼亞親王拉科齊·捷爾吉一世與瑞典和法國結盟,並得到高門的允許,入侵哈布斯堡治下的匈牙利。整個春天,斐迪南三世的外交都在設法讓奧斯曼撤回支援,並在拉科齊的東翼尋找施壓的力量。這段話是由這位修士傳達的第一人稱提議,提議者聲稱能夠在高門那邊做工作,能讓摩爾達維亞親王(Vasile Lupu)與拉科齊為敵,並能調遣兩千名哥薩克。密文裡沒有說是誰在說話,但周圍的明文說了。這位修士由國王從維爾紐斯派出,來到 il suo Generalissimo il Sig.re Stanislao Conespolschi,即大蓋特曼 Stanisław Koniecpolski 那裡。修士對他說,現在正是援助皇帝的時機,Koniecpolski“回答得如天使一般”,說他願意,出於對奧地利王室的感情,也出於對宗教和國家理由的熱忱。接下來就是密文。密文之後,修士報告說這一提議尚未生效,因為拉科齊已送了一大筆錢到君士坦丁堡,要讓摩爾達維亞親王被廢黜(fatto mazul)。信的日期地點是 Brody,Koniecpolski 的駐地。Koniecpolski 與摩爾達維亞和韃靼人有自己的往來,並在當年1月於 Ochmatów 擊敗了韃靼人。(這裡對明文框架作了概述,沒有逐字轉錄。)

Fra Giovanni di Lucca(Giovanni Giuliani da Lucca),多明我會士,人們從他的 Relatione 和 Itinerario 中知道他是1620和1630年代派往韃靼人、切爾克斯人、阿布哈茲人、明格列爾人和喬治亞人中間的傳教士,後來又在摩爾達維亞工作(Cristian Luca,2004,此處未查閱)。一位往來於摩爾達維亞、哥薩克地區和維也納之間的多明我會士,正是傳遞這類提議會用的那種信使。

06 方法與檔案

  1. 密文取自 Tomokiyo 的文章;計數、重複對和重合指數已核對(targets/lucca/ct.txt)。2026年9月22日對照 DECODE 影象訂正:十個碼組 17 → 14。
  2. 義大利語5-gram 模型,採用絕對摺扣和插值,去除了羅馬數字頁碼引用(targets/lucca/lm.py).
  3. 同音替換模擬退火器,先無約束執行(targets/lucca/solve.py),再固定八個一致的猜詞字母執行(targets/lucca/crib_anneal.py).
  4. 按最初轉錄,對17在 {i, n}、19在 {t, s} 中做語言模型解碼(Viterbi)(targets/lucca/decode.py).
  5. 固定猜詞程式的打亂密文對照(targets/lucca/control.py).

已核查:轉錄計數、猜詞一致性、各種子間的收斂、五個打亂對照、詞層面的義大利語,以及(2026年9月22日)對照手稿影象核對每個密文碼組。僅作概述:點出 Koniecpolski 的明文框架。

07 來源

分析指令碼和密文都在倉庫中(targets/lucca/).