Неправильное заполнение при шифровании и дешифровании 2-го массива - PullRequest
0 голосов
/ 11 июля 2019

Я хочу зашифровать двумерный массив с использованием 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...