2017-07-18 3 views
0

Ich habe ein Problem, wenn ich versuche, eine einfache Entschlüsselung mit der SJCL-Bibliothek zu tun. Ich kann Daten gut verschlüsseln.SJCL-Bibliothek Entschlüsselungsproblem

In diesem Beispiel habe ich wie so verschlüsselte Daten gespeichert:

encdata = sjcl.encrypt($('input[name="pass"]').val(), $('textarea[name="cleartxt"]').val()); 

ich die Daten ajax aus einer Datenbank. Nun, wenn ich die Daten zu entschlüsseln gehen, ziehe ich den sjcl JSON-String aus meiner Datenbank und führen Sie es durch diese Funktion:

function decryptdata(encdata) { 
    var dpassword = prompt('Decryption Password'); 
    console.log(sjcl.decrypt(dpassword, encdata)); 
    //$('.decrypted').html(dec); 
} 

ich die folgende Fehlermeldung auf der Konsole und es wird nicht darüber hinaus, dass sjcl Fortschritte. Entschlüsselung

sjcl.js:57 Uncaught TypeError: a.replace is not a function 
at Object.decode (sjcl.js:57) 
at Object.decrypt (sjcl.js:56) 
at decryptdata (my.js:72) 
at my.php?r=test:13 

Sicher mache ich hier etwas offensichtlich falsch?

+0

Verwenden Sie einfach HTTPS, Sie müssen das Passwort nicht selbst verschlüsseln. – zaph

+0

Er verschlüsselt kein Passwort, sondern einen gegebenen Klartext. Können Sie die Werte von encdata und dpassword ausgeben, nachdem Sie sie eingegeben haben (z. B. Daten)? – Nils

Antwort

1

Ich schaffte es, mein Problem zu lösen. Im Grunde waren es zwei/drei Probleme. Ich musste eine jquery "encodeURIComponent" auf den Parameter tun, bevor ich es an das PHP-Skript, das die Datenbank einfügen, geschickt habe, weil die PHP-Extrakt-Funktion das "+" in der verschlüsselten Zeichenkette entfernt hat.

Das zweite Problem war, PHP Rawurlcode (im Gegensatz zu URL-Code) zu verwenden, um meine Zeichenfolge zurück in Pre-Ajax-Format mit "+" Zeichen, im Gegensatz zu "".

Das dritte Problem war die Verwendung von jquerys "JSON.stringify", um es von einem JavaScript-Objekt in einen String umzuwandeln, mit dem sjcl.decrypt arbeiten würde. Der ursprüngliche Javascript Fehler macht jetzt Sinn!