如何在NodeJS中将缓冲区编码为Base64

时间:2019-01-22 10:06:13

标签: javascript node.js base64 buffer encode

我正在尝试将缓冲区编码为base64字符串,但是它只是将数组复制粘贴到字符串中而不进行编码。

我要编码的缓冲区是:

  

Uint8Array(16)

     

0:120

     

1:207

     

2:91

     

3:215

     

4:169

     

5:206

     

6:208

     

7:145

     

8:250

     

9:19

     

10:191

     

11:254

     

12:154

     

13:209

     

14:47

     

15:122

     

buffer:ArrayBuffer {byteLength:16}

     

byteLength:16

     

byteOffset:0

     

长度:16

     

:Uint8ArrayPrototype {…}

我试图使用buffer.toString('base64'),如您所见,但它不起作用

我为此使用的代码如下:

var buf = Buffer.from([18, 5, 2, 7, 32, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
    var aesCbc = new aesjs.ModeOfOperation.cbc(key);
    var encryptedBytes = aesCbc.encrypt(buf);
    console.log(encryptedBytes)
    var string64 = encryptedBytes.toString('base64');
    console.log(string64)

我期望这样的字符串:

  

eAnguAGneSD + Y / jOpikpnQ ==(这只是base64字符串的一个示例)

但结果是:

  

字符串:120,207,91,215,169,206,208,145,250,19,191,254,154,209,47,122

感谢您的时间!

1 个答案:

答案 0 :(得分:5)

您尝试将Uint8Array值编码为base64,而不是实际的缓冲区,您必须使用以下方法在其中创建一个缓冲区:

var encryptedBytes = Buffer.from(aesCbc.encrypt(buf));

encryptedBytes.toString('base64'); // your base64 string