首頁 >後端開發 >Golang >為什麼 Go 和 Pycrypto 會產生不同的 AES-CFB 加密結果?

為什麼 Go 和 Pycrypto 會產生不同的 AES-CFB 加密結果?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-13 11:11:10226瀏覽

Why Do Go and Pycrypto Produce Different AES-CFB Encryption Results?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn