This shows you the differences between two versions of the page.
— |
php:json_encryption_decryption [2018/11/27 14:54] (current) john created |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== JSON Encryption/ | ||
+ | This code works with a JSON stream encrypted with CryptoJS. You can use PHP with openSSL support to decrypt the data stream using your password. | ||
+ | ==== Decrypt ==== | ||
+ | < | ||
+ | /** | ||
+ | * Decrypt data from a CryptoJS json encoding string | ||
+ | * | ||
+ | * @param mixed $passphrase | ||
+ | * @param mixed $jsonString | ||
+ | * @return mixed | ||
+ | */ | ||
+ | function Decrypt($passphrase, | ||
+ | $jsondata = json_decode($jsonString, | ||
+ | $salt = hex2bin($jsondata[" | ||
+ | $ct = base64_decode($jsondata[" | ||
+ | $iv = hex2bin($jsondata[" | ||
+ | $concatedPassphrase = $passphrase.$salt; | ||
+ | $md5 = array(); | ||
+ | $md5[0] = md5($concatedPassphrase, | ||
+ | $result = $md5[0]; | ||
+ | for ($i = 1; $i < 3; $i++) { | ||
+ | $md5[$i] = md5($md5[$i - 1].$concatedPassphrase, | ||
+ | $result .= $md5[$i]; | ||
+ | } | ||
+ | $key = substr($result, | ||
+ | $data = openssl_decrypt($ct, | ||
+ | return json_decode($data, | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Encrypt ==== | ||
+ | < | ||
+ | /** | ||
+ | * Encrypt value to a cryptojs compatiable json encoding string | ||
+ | * | ||
+ | * @param mixed $passphrase | ||
+ | * @param mixed $value | ||
+ | * @return string | ||
+ | */ | ||
+ | function Encrypt($passphrase, | ||
+ | $salt = openssl_random_pseudo_bytes(8); | ||
+ | $salted = ''; | ||
+ | $dx = ''; | ||
+ | while (strlen($salted) < 48) { | ||
+ | $dx = md5($dx.$passphrase.$salt, | ||
+ | $salted .= $dx; | ||
+ | } | ||
+ | $key = substr($salted, | ||
+ | $iv = substr($salted, | ||
+ | $encrypted_data = openssl_encrypt(json_encode($value), | ||
+ | $data = array(" | ||
+ | return json_encode($data); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Execute ==== | ||
+ | < | ||
+ | |||
+ | $json = file_get_contents(' | ||
+ | $data = json_decode($json); | ||
+ | $secret = "YOUR PASSWORD"; | ||
+ | $rdat = Decrypt($secret, | ||
+ | echo $rdat; | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Example PHP ==== | ||
+ | < | ||
+ | $encrypted = Encrypt(" | ||
+ | $decrypted = Decrypt(" | ||
+ | </ |