1098 votes

Comment faire pour encoder Base64 dans node.js?

N'node.js ont intégré l'encodage base64 encore?

La raison pourquoi je vous demande c'est qu' final() de crypto ne peut de sortie hexadécimal, binaire ou ascii des données. Par exemple:

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');

Selon les docs, update() pouvez sortie des données codées en base64. Toutefois, final() ne prend pas en charge base64. J'ai essayé et ça va casser.

Si je fais ceci:

var ciph = cipher.update(plaintext, 'utf8', 'base64');
    ciph += cipher.final('hex');

Alors que dois-je utiliser pour le décryptage? Hex ou base64?

Donc, je suis à la recherche d'une fonction pour en base64 encode mon chiffré hex de sortie.

Merci.

2439voto

onteria_ Points 18947

Les tampons peuvent être utilisés pour prendre une chaîne ou un morceau de données et de faire de l'encodage base64 du résultat. Par exemple:

> console.log(new Buffer("Hello World").toString('base64'));
SGVsbG8gV29ybGQ=
> console.log(new Buffer("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))
Hello World

Les tampons sont un objet global, donc pas besoin est nécessaire. Tampons créés avec des chaînes peut prendre un paramètre d'encodage facultatif pour spécifier l'encodage que la chaîne est en. Disponibles toString et Buffer constructeur codages sont comme suit:

'ascii' - pour en ASCII 7 bits de données seulement. Cette méthode de codage est très rapide, et dépouiller peu élevé.

"utf8" - Multi-octets codés Les caractères Unicode. Beaucoup de pages web et d'autres formats de document utiliser UTF-8.

'ucs2' - 2-octets, little endian des caractères Unicode codés. Il peut encoder uniquement BMP(Basic Multilingual Plane, U+0000 À U+FFFF).

'base64' - Base64 de codage de la chaîne.

'binaire' - Un moyen de codage des premières des données binaires dans les chaînes en utilisant uniquement les 8 premiers bits de chaque caractère. Cette méthode de codage est obsolète et devrait être évitée dans faveur de Tampon objets lorsque cela est possible. Cet encodage sera supprimé dans les futures versions de Nœud.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X