Мое шифрование/дешифрование CryptoJS не работает

у меня есть массив массивов JSON, значения которых я пытаюсь зашифровать с помощью CryptoJS, а затем распечатать для использования в другом файле, где эти значения должны быть расшифрованы с помощью пользовательской парольной фразы.

но я делаю что-то не так, и я получаю "Uncaught Error: Malformed UTF-8 data" при расшифровке URL-адреса.

зашифровать.js:

var encrypted = CryptoJS.AES.encrypt(item[key], pass);
json[j] += encrypted.ciphertext.toString(CryptoJS.enc.Base64);

расшифровать.js:

var decrypted = CryptoJS.AES.decrypt(item[key], pass);
html += '<a href="' + decrypted.toString(CryptoJS.enc.Utf8) + '" target="_blank" class="socialico ' + key + '">' + icons[key] + '</a>';

я следовал этой пример... Помогите, очень пожалуйста.

1 ответов


это сообщение об ошибке обычно означает, что данные не были расшифрованы правильно, и полученные байты открытого текста не образуют допустимые символы UTF-8.

пару вещей, чтобы проверить:

  • во-первых, убедитесь, что вы используете тот же пароль для шифрования и дешифрования. Вы можете сохранить хэш правильного пароля, чтобы убедиться, что пользователь дал правильный пароль, прежде чем использовать его для дешифрования.
  • во-вторых, убедитесь, что значение item[key] является строкой перед шифрованием. CryptoJS не может шифровать объекты JSON. Сначала вам придется сериализовать его.