Encryption
用於 64 位輸入的計數器模式下的 AES
我正在閱讀如何將 AES 用於 64 位數據。我得到了這個答案:是否可以使用 64 位 I/O 塊大小來實現 AES?
這裡給出的答案是通過在逆流模式下執行 AES 64 位純文字產生 64 位密文。
XOR
但是當 AES 分組密碼產生的 128 位密文是64 位純文字時,我不能在這一點之下。它如何產生 64 位輸出?
AES 的計數器流模式的想法是逐塊生成 128 位的隨機位流,但您不必強制使用它的所有 128 位。
加密過程如下,考慮 $ m $ 64位消息:
- 產生 $ s = AES(Key, Nounce) $
- 請注意 $ s $ 是 128 位長所以 $ s = s_1 || s_2 $ 在哪裡 $ s_1 $ 和 $ s_2 $ 長度為 64 位。
- $ c = m \oplus s_1 $ 並放下 $ s_2 $ (無用)
解密過程是一樣的:
- 產生 $ s = AES(Key, Nounce) = s_1 || s_2 $ 在哪裡 $ s_1 $ 和 $ s_2 $ 長度為 64 位。
- $ m = c \oplus s_1 $
儘管我從 Crypto 的角度為您提供了答案,但我認為這個問題是題外話,因為它感覺更像是需要程式碼答案而不是 Crypto 答案(更面向數學)。