一個謎模擬軟體究竟應該如何加密字母?
編輯:我正在嘗試製作的模型是“Enigma 1”。我最初是從一本名為“Code Book”的書中了解到它的,然後從它的維基百科頁面上詳細查看了它。轉子接線和其他細節來自https://en.wikipedia.org/wiki/Enigma_rotor_details
我正在嘗試製作一個謎機器模擬軟體。我知道機器是如何工作的,但是在字母到達反射器之前試圖理解我的程式碼邏輯應該是什麼時遇到了麻煩。
假設 1、2 和 3 代表謎機器中每個轉子的設置(它們是我從維基百科得到的):
abcdefghijklmnopQrstuvwxyz 1:ekmflgdqvzntowyhxuspaibrcj abcdEfghijklmnopqrstuvwxyz 2:ajdksiruxblhwtmcqgznpyfvoe abcdefghijklmnopqrstuVwxyz 3:bdfhjlcprtxvznyeiwgakmusqo
並假設消息是“A”。以下是我認為應該發生的情況:從第一個轉子開始,消息可能變成“E”,但由於轉子在加密前旋轉了一個單位,因此它被加密為設置中的下一個字母:“K”。現在要找出第二個轉子發生了什麼,我們需要查看設置中的第 11 個字母(或 K 下方的字母),即“L”。同樣對於最終轉子,我們看到第 12 個字母(“L”下方)是“V”,據我了解,這應該是傳輸到反射器然後返回的內容。
雖然我的軟體配有環設置、外掛板和所有其他東西,並且它可以按照預期的方式解密它自己的加密消息,但密文永遠不會與線上謎模擬器為相同設置生成的相同,也不能即使我知道所有設置,也可以解密原始消息。如果你去這裡: http: //people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20_en.html 點擊“顯示監視器”按鈕並輸入“a”你會在它到達之前看到反射器,翻譯為“H”。很明顯我做錯了什麼。
有人可以幫我嗎?
我想你已經想通了,但我的猜測是你在開始加密*之前忘記將第一個轉子移動 1 步。*這也會影響它到達下一個轉子的字母等等。
完整路徑是
KBD-A>SB>A - A>ETW>A - B>(1)R3>K - J>(2)R2>B - B>(3)R1>D - D>UKW>H - H>(3)R1>D - D>(2)R2>C - D>(1)R3>G - F>ETW>F - F>SB>F-light
鍵盤 A 作為 A 到達外掛板 (Steckerbrett),作為 A 離開外掛板,作為 A 到達輸入輪,作為 A 離開,到達 B 層的第一個轉子,重新連接到 K 等等。再輸入 3 個“A”給出
A>SB>A - A>ETW>A - C>(1)R3>M - K>(2)R2>L - L>(3)R1>V - V>UKW>W - W>(3)R1>R - R>(2)R2>G - I>(1)R3>V - T>ETW>T - T>SB>T :T A>SB>A - A>ETW>A - D>(1)R3>F - C>(2)R2>D - D>(3)R1>H - H>UKW>D - D>(3)R1>B - B>(2)R2>J - M>(1)R3>C - Z>ETW>Z - Z>SB>Z :Z A>SB>A - A>ETW>A - E>(1)R3>L - H>(2)R2>U - U>(3)R1>K - K>UKW>N - N>(3)R1>N - N>(2)R2>T - X>(1)R3>Q - M>ETW>M - M>SB>M :M
對於以下任何人,兩個提示:
- 如果 Enigma I 設置為最可預測的設置:轉子 1-2-3,按此順序,全部位於 A 位置;如果你輸入 AAAAA,你應該得到 BDZGO。這是一個很好的第一個簡單測試。更不用說將 BDZGO 解密回 AAAAA。
- 查找現有的線上模擬器;使用它來複製您的加密,如果您的結果相同,那麼您就在正確的軌道上(或複制他們的錯誤)。