node.js - nodejs - react base 64 decode




Como fazer a codificação Base64 em node.js? (2)

A resposta aceita contém o que é considerado um problema de segurança em versões de nó maiores que 6 (embora pareça provável para este uso que a entrada sempre pode ser coagida para uma string).

O construtor Buffer está obsoleto de acordo com a documentation .

Here está um exemplo de uma vulnerabilidade que pode resultar da sua utilização na biblioteca ws.

Os trechos de código devem ler:

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

O node.js já possui codificação base64 embutida?

A razão pela qual eu pergunto isso é que final() da crypto só pode gerar dados hexadecimais, binários ou ascii. Por exemplo:

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

De acordo com os documentos, update() pode gerar dados codificados em base64. No entanto, final() não suporta base64. Eu tentei e vai quebrar.

Se eu fizer isso:

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

Então, o que devo usar para descriptografia? Hex ou base64?

Portanto, estou procurando uma função para codificar com base64 minha saída hexadecimal criptografada.

Obrigado.


crypto agora suporta base64 ( reference ):

cipher.final('base64') 

Então você poderia simplesmente fazer:

var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv);
var ciph = cipher.update(plaintext, 'utf8', 'base64');
ciph += cipher.final('base64');

var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv);
var txt = decipher.update(ciph, 'base64', 'utf8');
txt += decipher.final('utf8');




base64