AES-256-CBC-Mcrypt-PHP entschlüsseln und Crypto-JS Verschlüsseln

Ich versuche zu verschlüsseln, in Javascript mit CryptoJS und entschlüsseln in PHP. Der JS-code ist:

var salt = CryptoJS.lib.WordArray.random(128/8); 
var key256Bits500Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32, iterations: 500 });
var iv  = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); //just chosen for an example, usually random as well

encrypted = CryptoJS.AES.encrypt("Message", key512Bits1000Iterations, { iv: iv });  
var data_base64 = crypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64   = crypted.iv.toString(CryptoJS.enc.Base64);
var key_base64  = crypted.key.toString(CryptoJS.enc.Base64);

PHP ist wie folgt:

$encrypted = base64_decode($data_base64);
$iv = base64_decode($iv_base64);
$key = base64_decode($key_base64); 

    $plaintext = mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
echo ($plaintext);  

Diese nicht wieder die richtige Antwort.

Ich bin unsicher, wo die Dinge sind schlecht! Ich brauche meine eigenen IV, wenn ich aber nur sagen:

CryptoJS.AES.Encrypt("Message", "Secret Passphrase");
var data_base64 = crypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64   = crypted.iv.toString(CryptoJS.enc.Base64);
var key_base64  = crypted.key.toString(CryptoJS.enc.Base64);

Er HAT erfolgreich die Arbeit in den PHP-code -- nur die key_base64 ist nicht etwas, das geändert werden kann, muss es das sein, was der Benutzer erinnert sich... Und dann gibt es mir ein Salz, um einen Schlüssel aus der passphrase eingegeben und IDK, wie Sie es geschafft, dass die Verwendung von CryptoJS

InformationsquelleAutor Paul | 2014-01-17
Schreibe einen Kommentar