Comment faire de l'encodage en Base64 node.js?
N'node.js ont intégré l'encodage base64 encore?
La raison pour laquelle je pose cette question, c'est que final()
de crypto
ne peut sortir 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()
peut la sortie des données codées en base64. Cependant, 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.
Grâce.
- Pour quelqu'un qui cherche ce problème dans/après 2016
cipher.final('base64')
œuvres
Vous devez vous connecter pour publier un commentaire.
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:
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
etBuffer
constructeur de codages sont comme suit:const atob = (data) => Buffer.from(data, 'base64').toString('ascii');
Accepté la réponse contient ce qui est considéré comme un problème de sécurité dans le nœud versions supérieur à 6 (bien qu'il semble probable que, pour ce cas d'utilisation que l'entrée peut toujours être contraint à une chaîne de caractères).
La
Buffer
constructeur est obsolète selon la la documentation.Ici est un exemple d'une vulnérabilité pouvant résulter de l'utilisation dans le ws de la bibliothèque.
Les extraits de code devrait lire:
new Buffer
) plutôt que deBuffer.from
.crypto prend désormais en charge en base64 (référence):
De sorte que vous pourriez tout simplement faire: