Modular-Arithmetic

這個仿射密碼是如何工作的?

  • June 2, 2016

我有一個關於如何解決以下問題的問題:

一個句子被改成ASCII,然後用公式加密 $ E(x) = ax + b \bmod 256256 $ . 我只知道前4個字母是:W I S K

這是加密的消息:

064066 158368 092525 143358 099354 141643 110102 051667 024006 190286 133343

我該如何解決這個問題?我首先嘗試對蠻力進行程式,但我實際上想了解如何解決它。我也嘗試使用擴展的歐幾里得算法,但沒有走遠。

W在 ASCII 中是 87,所以

$$ 87a+b\equiv064066\pmod{256256}. $$ I在 ASCII 中是 73,所以

$$ 73a+b\equiv158368\pmod{256256}. $$ 減法,你得到

$$ 14a\equiv-94302\equiv161954\pmod{256256}. $$ 不幸的是 14 不是 256256 的互質數,所以你需要使用其他字母來解決這個問題。一旦你得到形式的方程

$$ ma\equiv n\pmod{256256} $$ 你可以解決 $ a\pmod{256256} $ 然後代入查找 $ b\pmod{256256}. $ (事實上,你已經有足夠的嘗試和錯誤來解決,但最好避免這種情況。)

W = 87; I = 73; S = 83; K = 75

這產生以下方程組:

$ \begin{cases} 87a+b \equiv 64066 \pmod {256256}\ 73a+b \equiv 158368 \pmod {256256}\ 83a+b \equiv 92525 \pmod {256256}\ 75a+b \equiv 143358 \pmod {256256} \end{cases} $

下面的提議很有用。

命題如果 $ x \equiv y \pmod {n} $ 然後 $ x \equiv y \pmod {n/d} $ 對於任何除數 $ d $ 的 $ n $ .

因此,您可以解決上述系統模數的因素 $ 256256 = 2^8 \cdot 7 \cdot 11 \cdot 13 $ .

例如,模 $ 7 $ , 我們獲得:

$ \begin{cases} 3a+b \equiv 2\pmod {7}\ 3a+b \equiv 0 \pmod {7}\ 6a+b \equiv 6 \pmod {7}\ 5a+b \equiv 5 \pmod {7} \end{cases} $

兩個第一個方程(模 $ 7 $ ) 是不可能的。這意味著 $ a $ 和 $ b $ 無法恢復模數 $ 7 $ .

現在讓我們看模數 $ 11 $ :

$ \begin{cases} 10a+b \equiv 2\pmod {11}\ 7a+b \equiv 1 \pmod {11}\ 6a+b \equiv 4 \pmod {11}\ 9a+b \equiv 6 \pmod {11} \end{cases} $

前兩個方程產生 $ a\equiv 4 \pmod {11} $ 和 $ b\equiv 6 \pmod {11} $ . 然而,這些解與最後兩個方程不相容。

我懷疑問題中存在一些錯誤。你能檢查密文的值嗎?或者我在計算中犯了錯誤…… ;)

引用自:https://crypto.stackexchange.com/questions/35744