cifrado AES con PyCrypto y descifrado con mcrypt
-
22-09-2019 - |
Pregunta
Para algunos datos sensibles decidí guardarlo AES-cifrado en el disco. He aplicado el cifrado usando PyCrypto .
Por otra parte, los datos son importantes, y los datos cifrados almacenados será mi única copia del mismo (copias de seguridad a un lado), por lo que me puse a buscar algún medio para recuperar los datos sin necesidad de utilizar PyCrypto tener un repliegue dada la posibilidad de que PyCrypto es no ya a mi disposición (por cualquier razón que sea).
mcrypt podría ser una opción.
Esta es mi caso de prueba para conseguir algo de texto cifrado escrito:
import Crypto.Cipher.AES
import sys
pwd = 'qwertzuiopasdfgh'
mode = Crypto.Cipher.AES.MODE_CBC
aes = Crypto.Cipher.AES.new( pwd, mode )
text = 'asdfghjklyxcvbnm'
sys.stdout.write( aes.encrypt( text ) )
redirige la salida a un archivo out.nc
y descifrado juzgado por
mcrypt -d -b -k qwertzuiopasdfgh -a rijndael-128 -m CBC out.nc
out
pero el archivo resultante tiene cero bytes de tamaño, por desgracia.
Espero que haya una combinación de opciones a mcrypt para hacer este trabajo ...
Solución
¿Por qué es importante ser capaz de recuperarse sin PyCrypto? Simplemente puede encender una máquina virtual con el viejo sistema operativo y la antigua versión de PyCrypto, exportar los datos, y volver a cifrar con un algoritmo y la implementación diferente.
Otros consejos
Creo que el problema puede sentar en el hecho de que no se proporciona una vía intravenosa para el modo CBC y sin IV quizá Mcrypt y PyCrypto manejan de forma diferente mediante el uso de diferentes vías intravenosas por defecto. He visto algunas implementaciones (phpseclib por ejemplo) uso y IV de 16 nulo bytes por defecto. mcrypt podría no hacerlo.