jueves, 13 de diciembre de 2018
CryptoJs - PHP - OpenSSL
Encrypt in PHP and decrypt with CryptoJS
PHP:
JS:function CryptoJSAesEncrypt($passphrase, $plain_text){ $salt = openssl_random_pseudo_bytes(256); $iv = openssl_random_pseudo_bytes(16); //on PHP7 can use random_bytes() istead openssl_random_pseudo_bytes() //or PHP5x see : https://github.com/paragonie/random_compat $iterations = 999; $key = hash_pbkdf2("sha512", $passphrase, $salt, $iterations, 64); $encrypted_data = openssl_encrypt($plain_text, 'aes-256-cbc', hex2bin($key), OPENSSL_RAW_DATA, $iv); $data = array("ciphertext" => base64_encode($encrypted_data), "iv" => bin2hex($iv), "salt" => bin2hex($salt)); return json_encode($data); } $string_json_fromPHP = CryptoJSAesEncrypt("your passphrase", "your plain text");
function CryptoJSAesDecrypt(passphrase,encrypted_json_string){ var obj_json = JSON.parse(encrypted_json_string); var encrypted = obj_json.ciphertext; var salt = CryptoJS.enc.Hex.parse(obj_json.salt); var iv = CryptoJS.enc.Hex.parse(obj_json.iv); var key = CryptoJS.PBKDF2(passphrase, salt, { hasher: CryptoJS.algo.SHA512, keySize: 64/8, iterations: 999}); var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv}); return decrypted.toString(CryptoJS.enc.Utf8); } console.log(CryptoJSAesDecrypt('your passphrase','<?php echo $string_json_fromPHP?>'));
Encrypt in CryptoJS and decrypt with PHP
JS:
PHP:function CryptoJSAesEncrypt(passphrase, plain_text){ var salt = CryptoJS.lib.WordArray.random(256); var iv = CryptoJS.lib.WordArray.random(16); var key = CryptoJS.PBKDF2(passphrase, salt, { hasher: CryptoJS.algo.SHA512, keySize: 64/8, iterations: 999 }); var encrypted = CryptoJS.AES.encrypt(plain_text, key, {iv: iv}); var data = { ciphertext : CryptoJS.enc.Base64.stringify(encrypted.ciphertext), salt : CryptoJS.enc.Hex.stringify(salt), iv : CryptoJS.enc.Hex.stringify(iv) } return JSON.stringify(data); }
function CryptoJSAesDecrypt($passphrase, $jsonString){ $jsondata = json_decode($jsonString, true); try { $salt = hex2bin($jsondata["salt"]); $iv = hex2bin($jsondata["iv"]); } catch(Exception $e) { return null; } $ciphertext = base64_decode($jsondata["ciphertext"]); $iterations = 999; //same as js encrypting $key = hash_pbkdf2("sha512", $passphrase, $salt, $iterations, 64); $decrypted= openssl_decrypt($ciphertext , 'aes-256-cbc', hex2bin($key), OPENSSL_RAW_DATA, $iv); return $decrypted; }
Suscribirse a:
Enviar comentarios
(
Atom
)
Sígueme en las Redes Sociales
Donaciones
Datos personales
Entradas populares
-
En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
-
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
-
Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
-
Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
-
Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...
© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool
No hay comentarios :
Publicar un comentario