Как кодировать буфер в Base64 в NodeJS - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь закодировать буфер в строку 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)

Я ожидаю такую ​​строку:

eAnguAGneSD + Y / jOpikpnQ == (это просто пример строки base64)

но результат:

Строка: 120,207,91,215,169,206,208,145,250,19,191,254,154,209,47,122

Спасибо за ваше время!

1 Ответ

0 голосов
/ 22 января 2019

Вы пытаетесь закодировать в base64 значение Uint8Array, а не буфер, вам нужно создать из него буфер, используя это:

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

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