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

Que*_*otd 0 javascript base64 buffer encode node.js

我正在尝试将缓冲区编码为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

缓冲区: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)
Run Code Online (Sandbox Code Playgroud)

我期望这样的字符串:

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

但结果是:

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

谢谢你的时间 !

mic*_*nic 6

您正在尝试编码为base64Uint8Array值,而不是实际上是缓冲区,您必须使用以下方法从中创建一个缓冲区:

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

encryptedBytes.toString('base64'); // your base64 string
Run Code Online (Sandbox Code Playgroud)