Classical-Cipher

Hill cipher 密碼分析 - 已知明文已知密鑰大小

  • March 7, 2014

你好我想知道如何解決這個問題我知道明文“abcdef”和密文。密鑰大小為2。我真的不知道如何找到解密和加密的密鑰。

讓 $ k=\left(\begin{array}{cc}k_0 & k_1\k_2 & k_3\end{array}\right) $ 成為關鍵。我會假設轉型 $ a=0 $ , $ b=1 $ , 等等。

所以你知道 $ k\left(\begin{array}{c}0\1\end{array}\right)=\left(\begin{array}{c}c_0\c_1\end{array}\right) $ 你知道的地方 $ c_0 $ 和 $ c_1 $ .

因此 $ c_0=0k_0+1k_1 $ 和 $ c_1=0k_2+1k_3 $ . 所以這是兩個方程,4個未知數。還不能解決。但是你有更多的數據給你 $ c_2=2k_0+3k_1 $ , $ c_3=2k_2+3k_3 $ , $ c_4=4k_0+5k_1 $ 和 $ c_5=4k_2+5k_3 $ . 現在你有 6 個方程和 4 個未知數。建立一個線性方程組並求解。這會給你 $ k_i $ 您的密鑰的值。解密密鑰正好相反。

請記住,數學是以 26 為模完成的。

您並不總是能夠求解線性方程組,但您可能有足夠的明文密文對來完成它。例如,使用註釋中的 PT/CT 對,您最終會得到以下等式 $ k_0,k_1 $ .

$$ \begin{align*} 2k_0+17k_1&=11\ 24k_0+15k_1&=3\ 19k_0+14k_1&=3 \end{align*} $$ 從那裡,我首選的方法是採用兩個方程,建構一個增廣矩陣並將其置於簡化的行梯形形式。所以你首先有

$$ \left(\begin{array}{cc|c}19&14&3\2&17&11\end{array}\right) $$ 我不會做所有的數學,而是讓你開始。首先將第一行乘以 $ 19^{-1}=11 $ . 那麼你會有

$$ \left(\begin{array}{cc|c}1&24&7\2&17&11\end{array}\right) $$ 然後你想擺脫 $ 2 $ 在第二行,也一樣 $ row_2=row_2-2row_1 $ . 最終你會以正確的形式擁有 $ k_0 $ 和 $ k_1 $ . 重複這個過程 $ k_2 $ 和 $ k_3 $ . 對於這個,它會解決的。如果你從 $ 3=24k_0+15k_1 $ 排在最前面,你可能已經被卡住了 $ 24 $ 沒有逆。因此,如果您遇到困難(需要反轉不可逆的東西),請嘗試不同的方程或一組不同的基本行操作。

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