.toString не кодирует байты в текст utf8? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь зашифровать строку, а затем расшифровать ее. Однако преобразование байтов в текст не работает должным образом.

Код:

var cjs = require("crypto-js");
const fs = require("file-system");

var text1 = "Some text to be encrypted";

var ctext = cjs.AES.encrypt(text1, "key 123").toString();

var bytes = cjs.AES.decrypt(ctext, "key 123");

var uctext = bytes.toString();
console.log(bytes + "   "+uctext);
//console.log("\n\n\n\n\n\n" + uctext);
console.log(text1 === uctext);

Код выводит байты с обеих сторон и переменную, которая должна быть равна оригинальный текст по-прежнему всего в байтах.

1 Ответ

1 голос
/ 17 февраля 2020

Вам нужно сделать это const uctext = bytes.toString(cjs.enc.Utf8);. В основном конвертируйте его в utf перед сравнением.

полный код

const cjs = require("crypto-js");

const text1 = "Some text to be encrypted";

const ctext = cjs.AES.encrypt(text1, "key 123").toString();

const bytes = cjs.AES.decrypt(ctext, "key 123");

const uctext = bytes.toString(cjs.enc.Utf8);
console.log(`${bytes }   ${uctext}`);
// console.log("\n\n\n\n\n\n" + uctext);
console.log(text1 === uctext);

...