Работает с шифрованием AES. не могу расшифровать с правым ключом

Я пытаюсь расшифровать данные шифрования. Данные были зашифрованы в режиме AES CBC с использованием pycryptodome lib. Есть такая ошибка - "ValueError: Неверная длина ключа AES (256 байт)

import os
from Crypto import Random
from Crypto.Cipher import AES

class AESCipher:
    def __init__(self, key):
        pass

    def pad(self, s):
        return s + b"\0" * (AES.block_size - len(s) % AES.block_size)

    def encrypt(self, message, key, key_size=256):
        message = self.pad(message)
        iv = Random.new().read(AES.block_size)
        cipher = AES.new(key, AES.MODE_CBC, iv)
        return iv + cipher.encrypt(message)

    def decrypt(self, ciphertext, key):
        iv = ciphertext[:AES.block_size]
        cipher = AES.new(key, AES.MODE_CBC, iv)
        plaintext = cipher.decrypt(ciphertext[AES.block_size:])
        return plaintext.rstrip(b"\0")

def send_data(data)
    key = os.urandom(16)
    cipher = AESCipher(key)
    ciphertext = cipher.encrypt(data, key)
    return key, ciphertext

def receive_data(key, data):
    cipher = AESCipher(key)
    decrypted = cipher.decrypt(data, key)
    return decrypted

data = b'12 43 42 46 af'
key, ciphertext = send_data(data)
decrypted = receive_data(key, data)

1 ответ

Решение

Я думаю, что вы хотите расшифровать текст, а не зашифрованный текст data (Не зашифрован):

decrypted = receive_data(key, ciphertext)
Другие вопросы по тегам