AES-256-CBC Mcrypt-PHP décrypter et Crypto-JS Chiffrer

Je suis en train de chiffrer en Javascript avec CryptoJS et décrypter en PHP. Le code JS est:

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);

Et le PHP est comme suit:

$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);  

Ce ne renvoie pas la bonne réponse.

Je ne suis pas sûr où les choses vont mal! J'ai besoin de faire mes propres IV, mais si je fais juste dire:

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);

Il le FAIT de travailler avec succès dans le code PHP: seule la key_base64 n'est pas quelque chose qui peut être changé, il a à être ce que l'utilisateur se souvient... Et puis il me donne un sel pour obtenir une clé de la phrase de passe entrés et IDK comment il a réussi à obtenir qu'à l'aide de CryptoJS

OriginalL'auteur Paul | 2014-01-17