PyCriptodome AES ValueError («Заполнение PKCS # 7 неверно.») - PullRequest
0 голосов
/ 29 апреля 2018
from Crypto.Cipher import AES

import hashlib

def encryptString(plaintext, key):
    # Encryption#
    plaintext = Padding.pad(plaintext, AES.block_size);

    iv = get_random_bytes(AES.block_size)
    print('How many:' , sys.getsizeof(key));
    cipher = AES.new(key, AES.MODE_CBC, iv)

    ciphertext = cipher.encrypt(plaintext);
    return (iv + ciphertext).hex();

def decryptString(ciphertextHex, key):
    ciphertext = binascii.unhexlify(ciphertextHex)
    iv = ciphertext[:AES.block_size]
    ciphertext = ciphertext[AES.block_size:]

    cipher = AES.new(key, AES.MODE_CBC, iv)

    plaintext = cipher.decrypt(ciphertext)
    plaintext = Padding.unpad(plaintext, AES.block_size)

    return plaintext.decode('utf-8');

Я создал оболочку шифрования / дешифрования AES. Он работает с примером ключа, например:

key = b'0123456789abcdef0123456789abcdef '

Но если я генерирую случайный ключ AES, подобный этому (из строки)

def convertKey(self,key):
    return hashlib.sha256(key.encode()).digest();

Затем возвращается эта ошибка:

Файл "C: \ Python36 \ lib \ site-packages \ Crypto \ Util \ Padding.py", строка 93, в unpad повысить ValueError («Заполнение PKCS # 7 неверно.») ValueError: Заполнение PKCS # 7 неверно.

Есть идеи, почему он возвращает это и работает с образцом ключа?

1 Ответ

0 голосов
/ 29 апреля 2018

Мне удалось это исправить: вы получаете это сообщение об ошибке, если ваши ключи не совпадают.

...