首页 >后端开发 >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