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 неверно.
Есть идеи, почему он возвращает это и работает с образцом ключа?