web-dev-qa-db-ja.com

CryptoJSの暗号化/復号化が機能していません

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

しかし、何か問題があり、URLを復号化するときに「UncaughtError:MalformedUTF-8data」が表示されます。

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

私は this の例に従いました...助けてください、かなりお願いしますか?

12
Viktor

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

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

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