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
Vous devez vous connecter pour publier un commentaire.
Votre code ne fonctionnera que si vous venez de corriger quelques fautes de frappe, il y
JS
PHP
Oeuvres, même si j'ai ajouté
\r\n
à la liste des personnages à découper PHP côtéJ'ai un projet de l'utilisation de cryptoJS. c'est le client-serveur de l'application mobile avec cordova. j'utilise cryptoJS pour le chiffrement et le déchiffrement juste à côté client avant parce que j'ai juste besoin de données sqlite ne peut pas être lu. mais j'ai besoin de chiffrer les données côté serveur afin de le rendre illisible alors qu'il transfert via internet. donc, je pense tout le contraire de votre réponse. donc, pouvez-vous m'aider à la résoudre. honnêtement, je ne comprennent pas encore avec le cryptage aes-je utiliser le mot de passe de chiffrer et de déchiffrer avec cryptoJS. je ne sais pas ce que iv et le sel. merci à l'avance.
J'ai dû rtrim /x07, mais cela a fonctionné parfaitement bien +1
OriginalL'auteur xzag