Block-Cipher
學習 Feistel 密碼
我現在正在學習 Feistel 密碼,但是公式有問題,所以我不能繼續前進。
加密:
- $ 𝐿𝐸_{𝑖+1} = 𝑅𝐸_𝑖 $
- $ 𝑅𝐸_{𝑖+1} = 𝐿𝐸_𝑖 \oplus 𝐹( 𝑅𝐸_𝑖 , 𝐾_𝑖) $
對於圓形功能 $ 𝐹( 𝑅𝐸_𝑖 , 𝐾_𝑖) $ ,有人可以建議我到底需要做什麼嗎?假設我的鑰匙是 $ 1197 $ ,括號之間需要發生什麼, $ (𝑅𝐸_𝑖 , 𝐾_𝑖) $ ,附上完整的圖表截圖,謝謝。
我想如果你這樣寫兩個方程會更有意義(參考維基百科中的漂亮圖表): $$ L_{i+1}=R_i,; R_{i+1}=L_i\oplus F_{K_i}(R_i). $$ 在每一輪中,輪函式 $ F $ 將相應的輪密鑰作為輸入 $ K_i $ 和上一輪的右輸出,然後計算輸出值,然後與上一輪的左輸出進行異或。 $ F $ 通常被建模為一個偽隨機函式並且有很多實例化(參見這裡的 Feistel 密碼列表,其中每個都指定了自己的 $ F $ 實例化和密鑰調度)。這篇文章討論了良好的要求/目標 $ F $ 實例化。