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中文网其他相关文章!