Go 和Pycrypto 之間的AES-CFB 加密結果不一致
使用AES-CFB 加密,Go 和Pycrypto 之間的比較得到不同的結果。為了調查這種差異,我們分析了提供的程式碼範例。
在 Python 中,Crypto.Cipher.AES 使用具有明確指定的初始向量 (IV) 的 MODE_CFB。相反,在 Go 中,aes.NewCipher 需要明確建立 AES 分組密碼,並隨後使用所需的 IV 實例化 CFBEncrypter 或 CFBDecrypter。
兩種實作之間的關鍵差異在於它們對段大小的處理。 Pycrypto 在 8 位元段上運行,稱為 CFB8,而 Go 預設使用 16 位元段。這種差異導致了加密結果中觀察到的差異。
適應 Go 到 Python 的 CFB8 方法
為了允許 Go 使用 CFB8 設定解密由 Pycrypto 加密的密文,原始碼Go 的 CFBDecrypter 的程式碼可以修改。具體來說,XORKeyStream 方法可以適應處理 8 位元段。
此修改將使 Go 能夠解密使用 Pycrypto 的特定 AES-CFB8 參數加密的密文,從而促進兩種語言在處理加密和解密任務時的互通性。
以上是為什麼 Go 和 Pycrypto 會產生不同的 AES-CFB 加密結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!