¿No tiene node.js codificación base64 incorporada todavía?
La razón por la que pido es que final()
a partir crypto
pueden los datos sólo hexagonales de salida, ASCII o binarios. Por ejemplo:
var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv);
var ciph = cipher.update(plaintext, 'utf8', 'hex');
ciph += cipher.final('hex');
var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv);
var txt = decipher.update(ciph, 'hex', 'utf8');
txt += decipher.final('utf8');
Según los documentos, update()
puede generar datos codificados en base64. Sin embargo, final()
no es compatible con base64. Lo intenté y se romperá.
Si hago esto:
var ciph = cipher.update(plaintext, 'utf8', 'base64');
ciph += cipher.final('hex');
Entonces, ¿qué debo usar para descifrar? Hex o base64?
Por lo tanto, estoy buscando una función para codificar en base64 mi salida hexadecimal cifrada.
cipher.final('base64')
funcionaRespuestas:
Los buffers se pueden usar para tomar una cadena o una pieza de datos y realizar una codificación base64 del resultado. Por ejemplo:
Los buffers son un objeto global, por lo que no se necesita ningún requisito. Los buffers creados con cadenas pueden tomar un parámetro de codificación opcional para especificar en qué codificación se encuentra la cadena. Las codificaciones disponibles
toString
y delBuffer
constructor son las siguientes:fuente
const atob = (data) => Buffer.from(data, 'base64').toString('ascii');
.toString("binary")
(atob
significa ascii (base64) a binario, después de todo)La respuesta aceptada anteriormente contenida
new Buffer()
, lo que se considera un problema de seguridad en las versiones de nodo superiores a 6 (aunque parece probable para este caso de uso que la entrada siempre se pueda forzar a una cadena).El
Buffer
constructor está en desuso de acuerdo con la documentación .Aquí hay un ejemplo de una vulnerabilidad que puede resultar de su uso en la biblioteca ws.
Los fragmentos de código deberían leer:
Después de escribir esta respuesta, se ha actualizado y ahora coincide con esto.
fuente
new Buffer
) en lugar deBuffer.from
.crypto ahora es compatible con base64 ( referencia ):
Entonces simplemente podrías hacer:
fuente
Los buffers se pueden usar para tomar una cadena o una pieza de datos y realizar una codificación base64 del resultado. Por ejemplo:
Puede instalar Buffer a través de npm como: -
npm i buffer --save
puedes usar esto en tu
js
archivo así:fuente
Estoy usando el siguiente código para decodificar la cadena base64 en la API del nodo nodejs versión 10.7.0
No intente ejecutar el código anterior en la consola del navegador, no funcionará. Ponga el código en los archivos del lado del servidor de nodejs. Estoy usando el código de línea anterior en el desarrollo de API.
fuente
He creado una pequeña biblioteca js npm para la conversión de codificación / decodificación base64 en Node.js.
Instalación
Uso
fuente
Puede hacer la codificación y decodificación base64 con javascript simple.
Esto se implementa en este decodificador de codificador Base64
fuente