我正在尝试将缓冲区编码为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
感谢您的时间!
答案 0 :(得分:5)
您尝试将Uint8Array值编码为base64
,而不是实际的缓冲区,您必须使用以下方法在其中创建一个缓冲区:
var encryptedBytes = Buffer.from(aesCbc.encrypt(buf));
encryptedBytes.toString('base64'); // your base64 string