【问题标题】:Receiving a TypeError in trying to create a new AES cipher in Python3尝试在 Python3 中创建新的 AES 密码时收到 TypeError
【发布时间】:2019-03-17 21:28:24
【问题描述】:

刚刚在 Pycharm 中安装了 PyCryptodome。我有 3 行代码。我正在尝试为 AES 函数提供一个硬 iv 和 key 值。它抛出这个:

  File "C:\Users\user\PycharmProjects\CS\venv\lib\site-packages\Crypto\Cipher\AES.py", line 92, in _create_base_cipher
if len(key) not in key_size:
TypeError: object of type 'int' has no len()

这是我的代码。

iv = 0x0008739a3043314e614c4b764f234189
key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
cipher = AES.new(key, AES.MODE_CBC, iv)

我已尝试转换为二进制,但得到的 AES 密钥长度不正确 (258)

iv = 0x0008739a3043314e614c4b764f234189
biv = bin(iv)
key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
bkey = bin(key)

cipher = AES.new(bkey, AES.MODE_CBC, biv)    


ValueError: Incorrect AES key length (258 bytes)

【问题讨论】:

    标签: python-3.x binary key aes typeerror


    【解决方案1】:

    密钥应该以字节为单位。将整数转换为字节:

    key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
    bkey = key.to_bytes(32, 'big')
    >>> bkey
    b'\xf1\x88\xc2\xf6\x17e\x026\x8a\xb3F\xa0\xb4\x0f\x10\x98\xed5\x0c<FY^\x99\x81G\xab\x1d\xb9\xd8e\xb7'
    

    请注意,bin() 将整数转换为字符串,将数字表示为 '0' 和 '1' 字符的序列,这里用处不大。

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2019-03-04
      • 2011-06-02
      • 1970-01-01
      • 2021-10-28
      • 2018-07-02
      相关资源
      最近更新 更多