Тип объекта <class 'str'> не может быть передан в код на языке C в AES CTR

Я хочу зашифровать с помощью AES ctr в Python, но получаю ошибку:

Тип объекта <class 'str'> не может быть передан в код C

Я пробовал код из tweaksp, используя code.

Все, что я хочу, это просто зашифровать открытый текст.

Вот мой код:

key_bytes = 16
def encrypt(key, pt):
    pt = read_file(pt)

    if len(key) <= key_bytes:
        for x in range(len(key),key_bytes):
            key = key + "0"

    assert len(key) == key_bytes

    print(key)
    print(pt)
    # Choose a random, 16-byte IV.
    iv = Random.new().read(AES.block_size)

    # Convert the IV to a Python integer.
    iv_int = int(binascii.hexlify(iv), 16)
    print(iv_int)

    # Create a new Counter object with IV = iv_int.
    ctr = Counter.new(AES.block_size * 8, initial_value=iv_int)
    print(ctr)

    ctr2 = ctr.encode('utf8')
    # Create AES-CTR cipher.
    aes = AES.new(key.encode('utf8'), AES.MODE_CTR, counter=ctr2)
    print(aes)
    # Encrypt and return IV and ciphertext.
    ciphertext = aes.encrypt(pt)
    return (iv, ciphertext)

def read_file(f):
    f = open('media/txt/'+f, 'r')
    f.read()
    f.tell()
    f.seek(0)
    file_content = f.read()
    f.close()
    return file_content

И мой трассировщик:

Traceback (most recent call last):
  File "C:\Users\Capoo\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "C:\Users\Capoo\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "F:\KULIAH\SEMESTER8\SKRIPSI\MusicLockApp\MusicLockApp\views.py", line 54, in homepage
    (iv, enc) = encrypt(ky, pt)
  File "F:\KULIAH\SEMESTER8\SKRIPSI\MusicLockApp\MusicLockApp\views.py", line 268, in encrypt
    ciphertext = aes.encrypt(pt)
  File "C:\Users\Capoo\lib\site-packages\Crypto\Cipher\_mode_ctr.py", line 201, in encrypt
    c_uint8_ptr(plaintext),
  File "C:\Users\Capoo\lib\site-packages\Crypto\Util\_raw_api.py", line 242, in c_uint8_ptr
    raise TypeError("Object type %s cannot be passed to C code" % type(data))
TypeError: Object type <class 'str'> cannot be passed to C code
Вернуться на верх