Crypto.Cipher AES.MODE_EAX crypto_and_digest错误:参数2必须是字节,而不是bytearray

时间:2019-07-07 15:53:27

标签: aes pycrypto

以下代码给了我错误“参数2必须是字节,而不是字节数组”。除了一些仅将一个参数传递给该方法的示例代码外,我找不到有关crypto_and_digest的任何文档。有人知道这是什么问题吗?谢谢。

key = rb(16)
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(b'hello')

2 个答案:

答案 0 :(得分:0)

我在以下代码中将错误源追溯到第三行

partial = self._cache[:]
partial[self._cache_n:] = b'\x80' + b'\x00' * (bs - self._cache_n - 1)
pt = strxor(strxor(self._last_ct, partial), self._k2)
函数摘要中的

在python3.7 / site-packages / Crypto / Hash / CMAC.py文件中。 该错误是关于第二个自变量partial,它是一个字节数组。当我将第三行修改为以下内容时,错误消失了。

pt = strxor(strxor(self._last_ct, bytes(partial)), self._k2)

答案 1 :(得分:0)

很可能您已经安装了pycryptodome和旧的pycrypto软件包。

运行“ pip卸载pycrypto”,然后重试。

有关更多详细信息,请参见 https://pycryptodome.readthedocs.io/en/latest/src/faq.html