criptografia é uma ferramenta essencial para a segurança de dados. Com base no script apresentado a seguir, desenvolvido a partir de AES, analise as assertivas abaixo, assinalando V, se verdadeiras, ou F, se falsas.
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
import os
def encrypt(msg, key):
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
padder = padding.PKCS7(128).padder()
padded = padder.update(msg.encode()) + padder.finalize()
encrypted = cipher.encryptor().update(padded) + cipher.encryptor().finalize()
return iv + encrypted
def decrypt(data, key):
iv, encrypted = data[:16], data[16:]
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
decrypted_padded = cipher.decryptor().update(encrypted) + cipher.decryptor().finalize()
unpadder = padding.PKCS7(128).unpadder()
return (unpadder.update(decrypted_padded) + unpadder.finalize()).decode()
key = os.urandom(32)
msg = "Mensagem secreta"
enc = encrypt(msg, key)
print(enc.hex())
print(decrypt(enc, key))
( ) O vetor de inicialização (IV) é sempre fixo e não precisa ser transmitido junto com a mensagem criptografada.
( ) O padding no código é opcional, porque o AES pode criptografar mensagens de qualquer tamanho sem necessidade de ajuste.
( ) O script utiliza criptografia simétrica AES em modo CBC, onde a mesma chave é usada para criptografar e descriptografar os dados.
A ordem correta de preenchimento dos parênteses, de cima para baixo, é: