Closed marceloarenassaavedra closed 2 years ago
Hola, Tengo dos preguntas sobre este caso de prueba,
En primer lugar AES, no me permite recibir un bytearray, solo algo del tipo bytes, es esto un problema, pregunto porque en su definición ocupa un bytearray.
Por otro lado se ocupa un IV el cual es bytearray(b'1234567890123456')
, este parametro yo lo ocupo en davies_meyer para llegar al resultado correcto, pero en su definicion del enunciado, nunca se le pasa este parametro a esa funcion, estoy haciendo algo mal?
Hola!
No es un problema para el funcionamiento de AES_128 que la llave y el mensaje sean de tipo bytearray
, puesto que AES también funciona con entradas de este tipo.
La función davies_meyer
solo recibe como parámetros una función encrypt
para cifrar mensajes, el largo de la llave l_key
para encrypt
y el largo de los mensajes l_message
para encrypt
, y a partir de estos parámetros debe generar una función de compresión. La construcción de Davies-Meyer no necesita un vector de inicialización, por lo que IV
no se debe ocupar en la función davies_meyer
.
Saludos!
Hola, no se si tendre otra version de pycrypto
pero AES me lanza un error cuando le paso un bytearray. No me es tanto problema ya que simplemente paso el bytearray
a tipo byte
por otro lado, creo que me estoy confundiendo al generar la funcion davies_meyer
y merkle-damgard
.
Para mi davies_meyer
es la funcion que hace el hash, es decir separa el mensaje el bloque y lo va hasheando como se indica en clases, por otro lado merkle-damgard
le agrega el padding a el mensaje y luego retorna davies_meyer
, me estoy equivocando?
La construcción de Davies-Meyer solo se utilizada para generar una función de compresión, vale decir, una función de hash para mensajes de largo fijo. La construcción de Merkle-Damgard se utiliza para generar una función de hash para mensajes de largo arbitrario, y es esta construcción la que primero utiliza una función de padding y luego va dividiendo el mensaje en bloques. Las definiciones formales de estas construcciones están en la presentación de clases sobre construcción de funciones de hash.
Saludos!
Al probar los test, me sale que AES_128 NO recibe bytearray
como parametros, sino que los tengo que pasar a bytes
para que no me de error. Es esto correcto?
Hola, me paso lo mismo por usar la librería incorrecta, instala pycryptodome
Hola, me paso lo mismo por usar la librería incorrecta, instala pycryptodome
Yo instale esa pero me aparece el error, lo solucione poniendo solo un bytes(message+H)
cuando queria usar la compresion, la que retorna un bytearray(aes.encrypt(mensaje))
para mantener los tipos de entrada y retorno que se piden en el enunciado
Para probar sus soluciones de la pregunta 1, consideren la siguiente implementación de AES para llaves y mensajes de 16 bytes (128 bits):
Utilizando esta implementación de AES y las funciones pedidas en la tarea, pruebe su implementación incluyendo el siguiente main:
El resultado de ejecutar su programa debería ser el siguiente:
Saludos!