Я хочу зашифровать двумерный массив с использованием AES (режим CBC) в pycryptodome
.В процессе я получаю неправильную проблему с заполнением.Если я не использую функцию unpad()
, моя расшифровка будет неправильной.
Как решить эту проблему с ошибкой заполнения?
def encrypt_array(arr,key_encrypt,iv_encrypt):
print("key_encrypt:",key_encrypt)
arr_bytes=array([3,3])
print("arr_bytes shape:",arr_bytes.shape)
print("arr_bytes shape:",arr_bytes.dtype)
arr_bytes=arr[:3,:3].tobytes()
print("length:",len(arr_bytes))
print("arr_bytes:",arr_bytes)
cipher1 = AES.new(key_encrypt, AES.MODE_CBC,iv_encrypt)
cipher_text=cipher1.encrypt(pad(arr_bytes,AES.block_size))
#print(cipher_text)
return(cipher_text)
def decrypt_array(for_decrypt,key_decrypt,iv_decrypt):
print("key_decrypt:",key_decrypt)
print("IV_decrypt:",iv_decrypt)
decipher=AES.new(key_decrypt,AES.MODE_CFB,iv_decrypt)
decipher_text=unpad(decipher.decrypt(for_decrypt),AES.block_size)
return(decipher_text)
def main():
ar = array([[1,2,3],
[4,5,6],
[7,8,9]])
print("type:",ar.dtype)
key = get_random_bytes(16)
print("key;",key)
iv = get_random_bytes(16)
print("IV:",iv)
cipher_t = encrypt_array(ar,key,iv)
decipher_t = decrypt_array(cipher_t,key,iv)