14

値をCryptoJSで暗号化し、別のファイルで使用するために印刷しようとしているJSON配列の配列があります。これらの値は、ユーザーが指定したパスフレーズを使用して復号化する必要があります。

しかし、私は何か間違ったことをしており、URL を復号化するときに「Uncaught Error: Malformed UTF-8 data」が表示されます。

暗号化.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>';

私はこの例に従いました...助けてください。

4

1 に答える 1

15

このエラーメッセージは通常、データが正しく復号化されておらず、結果のプレーンテキストバイトが有効なUTF-8文字を形成していないことを意味します。

確認すべき点がいくつかあります。

  • まず、暗号化と復号化の両方に同じパスワードを使用していることを確認してください。復号化に使用する前に、ユーザーが正しいパスワードを入力したかどうかを確認できるように、正しいパスワードのハッシュを保持することをお勧めします。
  • item[key]次に、暗号化する前に、値が文字列であることを確認してください。CryptoJSはJSONオブジェクトを暗号化できません。最初にシリアル化する必要があります。
于 2012-09-25T21:45:36.160 に答える