Está en la página 1de 1

Primero importamos el módulo AES

Ahora creamos la función para encriptar:

def encrypt(key, data):


cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)

return cipher.nonce + tag + ciphertext

na vez hemos creado la función para encriptar necesitamos


comprender cada parámetro, variables y demás dato que nos sea de
utilidad.
Lo primero que hay que saber, es que key es la clave,
contraseña, etc, con la que queramos cifrar los datos, mientras que
data son los datos a cifrar. Cada uno de ellos debe ser de
tipo bytes, aunque ya lo veremos detenidamente en una breves
instantes.
La variable ciphertext es la que hace referencia al resultado
de los datos cifrados; tag es el código de autenticación de
mensajes (MAC) calculado durante el cifrado. Y por último pero no
menos importante el nonce (number occuring once [número que
ocurre una vez, en español]), también conocido como el vector de
inicialización, el cual es un número aleatorio que se utiliza para
mejorar la aleatorización.

Ahora creamos la función para desencriptar:

def decrypt(key, data):


nonce = data[:AES.block_size]
tag = data[AES.block_size:AES.block_size * 2]
ciphertext = data[AES.block_size * 2:]

cipher = AES.new(key, AES.MODE_EAX, nonce)

return cipher.decrypt_and_verify(ciphertext, tag)


Lo primero que hay que saber, es que necesitamos calcular todo lo que
el destinatario nos ha enviado. En el caso del nonce ímplicitamente
estamos colocando un índice del 0-16 (la constante block_size del módulo
AES vale 16), es recomendable usar la constante explícitamente en vez del
número que conozcamos. Ya partiendo con el siguiente dato deseado, el tag,
que ahora debe comenzar con un índice de 16-32 y por último, ciphertext con
un índice de 32-[Hasta el último dato].

También podría gustarte