tengo los siguientes datos cifrada:¿Qué pasa con el descifrado crypto de nodejs?
U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o
El pase para descifrar que es: password
(Es el ejemplo de gibberish-aes)
En la línea de comandos usando openssl:
echo "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o" | openssl enc -d -aes-256-cbc -a -k password
La salida es:
Made with Gibberish\n
Con mi solicitud NodeJS:
var decipher = crypto.createDecipher('aes-256-cbc', "password");
var dec = decipher.update("U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o",
'base64', 'utf8');
dec += decipher.final('utf8');
tengo el siguiente error en la línea de TypeError: DecipherFinal fail
decipher.final
.
¿Echo de menos algo? Gracias.
Gran pregunta. Descubrí que openssl usa una sal cada vez, por lo que necesitas un interruptor '-nosalt'. Sin sal, utiliza la misma IV y la clave derivada cada vez, puede ver que proporcionan un conmutador '-p'. Luego puede hacer 'createDecipheriv (data, key, iv)' en el nodo. Pero no decodifica el texto correctamente de todos modos. Así que estoy atrapado también. –
@owlstead He usado ** clave ** y ** iv ** directamente, ¿esto usa ** PBKDF2 **?http://pastebin.com/uhxTRn9T aquí están mi código y resultados. ¿Qué está mal? –
He buscado en el código y debería usar la derivación de la clave openssl sin sal. No estoy seguro acerca de la IV. Sé que con Java tampoco puedo descifrar el resultado de openssl. La trama se complica. –