Мое шифрование/дешифрование 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. Сначала вам придется сериализовать его.