Rc4

從給定的密文和公開文本中查找密鑰

  • March 30, 2016

對加密的東西很新,當我知道開放文本(p)和加密(c)文本時,我必須用 C 編寫一個程序來計算 RC4 中使用的密鑰(k)

所以我有c_1=p_1 XOR k。我如何從中計算密鑰?XOR 的“逆”操作是什麼?

給你 $ c,p $ 並且被挑戰去尋找 $ k $ 使用關係 $ c=p\oplus k $ (在哪裡 $ \oplus $ 表示按位異或)。

由於異或的逆運算是異或,你可以恢復 $ k $ 通過計算 $ k=p\oplus c=c\oplus p $ .


您可能想知道 a) 為什麼 XOR 是 XOR 的逆和 b) 為什麼 XOR 是可交換的(例如 $ a\oplus b=b\oplus a $ ).

對於 b),我們需要 XOR 的真值表:

Input 1 | Input 2 | Output
--------+---------+-------
  0    |    0    |   0   
--------+---------+-------
  0    |    1    |   1   
--------+---------+-------
  1    |    0    |   1   
--------+---------+-------
  1    |    1    |   0   

您可以清楚地看到,XOR 是可交換的,因為相同的輸入總是產生“1”,而不同的輸入(無論它來自哪裡)總是產生“0”。

至於 a),我們需要看到 $ c\oplus p = k \oplus p \oplus p = k $ ,例如那個 $ a\oplus a=0 $ 然後 $ a\oplus 0=a $ 鑑於上面的真值表,這是微不足道的,因為您可以清楚地觀察到相同的輸入位總是導致零,如果與零配對,任何輸入總是導致其自身。

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