Ich habe ein Array von JSON-Arrays, deren Werte ich mit CryptoJS zu verschlüsseln versuchen und dann für die Verwendung in einer anderen Datei, wo diese Werte mit einer benutzerdefinierten Passphrase entschlüsselt werden sollen.Meine CryptoJS-Verschlüsselung/Entschlüsselung funktioniert nicht
Aber ich mache etwas falsch und ich bekomme "Uncaught Error: Malformed UTF-8-Daten" beim Entschlüsseln der URLs.
encrypt.js:
var encrypted = CryptoJS.AES.encrypt(item[key], pass);
json[j] += encrypted.ciphertext.toString(CryptoJS.enc.Base64);
decrypt.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>';
folgte ich this Beispiel ... Hilfe, bitte schön?
Vielen Dank für Ihr Interesse. Ich habe in beiden Dateien das gleiche 'var pass = 'something' und' console.log (typeof (item [key]) == 'string') 'für alle Elemente richtig gedruckt. – Viktor
Ahh. Ich bemerkte ein anderes wahrscheinliches Problem. Sie müssen die gleiche IV für die Entschlüsselung verwenden, die während der Verschlüsselung verwendet wurde. Normalerweise wird die IV zusammen mit dem Chiffretext serialisiert, aber Sie speichern explizit nur den Chiffretext ohne die IV. Versuchen Sie 'chiffred.ciphertext.toString (CryptoJS.enc.Base64)' in 'encrypted.toString() 'zu ändern' –
Oh, danke! Ich habe den 'ciphertext' und' Base64' entfernt und jetzt scheint es zu funktionieren. Jetzt habe ich mir eine ziemlich sichere Webseite mit nur JavaScript! Das ist schön, ziemlich cool. – Viktor