不能传递给 C 代码,python-3.x,pycryptodome"/>

首页 > 解决方案 > 获取异常:对象类型不能传递给 C 代码

问题描述

我在 Python 3.7.2 上安装pip install pycryptodome 。我遇到了obj = AES.new(key, AES.MODE_CBC, iv)行的异常。我的代码是:

from Crypto import Random
from Crypto.Cipher import AES
import random

def get_encryption():
    try:
        str = "This is input string"

        key = b'abcdefghijklmnop'  
        iv = Random.new().read(AES.block_size)

        obj = AES.new(key, AES.MODE_CBC, iv)
        encrypted = obj.encrypt(str)
        print(encrypted)
    except Exception as e:
        print(e)

我一直尝试但没有得到解决方法。

标签: python-3.xpycryptodome

解决方案


在尝试了所有方法后,我得到了解决方案。我将密钥字符串转换为字节。代码是:

from Crypto import Random
from Crypto.Cipher import AES
import random

def get_encryption():
    try:
        strmsg = "This is input string"

        key = 'abcdefghijklmnop'  
        key1 = str.encode(key)

        iv = Random.new().read(AES.block_size)

        obj = AES.new(key1, AES.MODE_CBC, iv)
        encrypted = obj.encrypt(str.encode(strmsg))
        print(encrypted)
    except Exception as e:
        print(e)

推荐阅读