Magna Concursos

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, é:

 

Provas

Questão presente nas seguintes provas