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

How to encode a Buffer to Base64 in NodeJS

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

length: 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== (it's just an example of a base64 string)

但结果是:

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

感谢您的宝贵时间!

您正在尝试将 Uint8Array 值编码为 base64,实际上不是缓冲区,您必须使用以下命令从中创建缓冲区:

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

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