我试图弄清楚为什么我的 Python 客户端和 Ruby 服务器在如何加密数据方面存在分歧。我在 Ruby 代码和我的代码中看到的唯一区别是它们没有指定初始化向量,因此它回退到所有 \x0 的默认值
当我尝试在没有 iv 的情况下实例化 PyCrypto 时,它给了我一个错误。这是一个例子:
from Crypto.Cipher import AES
test = "Very, very confidential data"
key = b'Thirty Two Byte key, made Beef y'
gryp = AES.new(key, AES.MODE_CBC)
(这个例子本质上是来自 PyCrypto 文档的示例代码,没有指定 IV)文档说 w/r/t IV“它是可选的,当不存在时,它将被赋予全零的默认值。” 但是我收到错误“ValueError: IV must be 16 bytes long”。
所以我可以指定IV,这不是问题本身,但我试图弄清楚它是否认为它不能使用默认值,如果我使用库的方式有其他问题。