Si intenta ejecutar la línea de comando openssl
, verá que le pedirá una "contraseña de cifrado". Esa contraseña es la clave; no hay ninguna clave almacenada en ningún otro lugar.
Mirando el código fuente de OpenSSL (aquí estoy mirando OpenSSL-1.0.2g, el archivo es apps/enc.c
), parece que se usa la contraseña, junto con un salt aleatorio, en el EVP_BytesToKey()
: esa función genera la clave de cifrado (y la IV) de la sal y la contraseña, con una complicada función basada en hash. El recuento de iteraciones está codificado en 1 (lo que, en lo que respecta al hashing de contraseñas, es terrible). El archivo de salida (sin contar la codificación Base64 agregada con la opción -a
) comienza con una secuencia de ocho bytes fijos ( 53 61 6c 74 65 64 5f 5f
) seguido por la sal en sí (8 bytes), luego los datos cifrados. Por lo tanto, la sal que se generó aleatoriamente se codifica en el propio archivo, pero la contraseña no se almacena en ningún otro lugar que no sea el cerebro del usuario.
No tengo conocimiento de una herramienta estándar llamada "aescrypt". Las búsquedas de Google muestran varias herramientas con ese nombre, por lo que no puedo saber cuál tiene en su máquina. Sin embargo, apuesto a que el principio general es el mismo: la herramienta solicita una contraseña y deriva la clave de cifrado de esa contraseña.