User Tools

Site Tools


php:json_decryption

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
php:json_decryption [2018/11/27 14:53]
john removed
— (current)
Line 1: Line 1:
-===== JSON Encryption/Decryption ===== 
-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 ==== 
-<code> 
-/** 
-* Decrypt data from a CryptoJS json encoding string 
-* 
-* @param mixed $passphrase 
-* @param mixed $jsonString 
-* @return mixed 
-*/ 
-function Decrypt($passphrase, $jsonString){ 
-    $jsondata = json_decode($jsonString, true); 
-    $salt = hex2bin($jsondata["s"]); 
-    $ct = base64_decode($jsondata["ct"]); 
-    $iv  = hex2bin($jsondata["iv"]); 
-    $concatedPassphrase = $passphrase.$salt; 
-    $md5 = array(); 
-    $md5[0] = md5($concatedPassphrase, true); 
-    $result = $md5[0]; 
-    for ($i = 1; $i < 3; $i++) { 
-        $md5[$i] = md5($md5[$i - 1].$concatedPassphrase, true); 
-        $result .= $md5[$i]; 
-    } 
-    $key = substr($result, 0, 32); 
-    $data = openssl_decrypt($ct, 'aes-256-cbc', $key, true, $iv); 
-    return json_decode($data, true); 
-} 
- 
-</code> 
- 
-==== Encrypt ==== 
-<code> 
-/** 
-* Encrypt value to a cryptojs compatiable json encoding string 
-* 
-* @param mixed $passphrase 
-* @param mixed $value 
-* @return string 
-*/ 
-function Encrypt($passphrase, $value){ 
-    $salt = openssl_random_pseudo_bytes(8); 
-    $salted = ''; 
-    $dx = ''; 
-    while (strlen($salted) < 48) { 
-        $dx = md5($dx.$passphrase.$salt, true); 
-        $salted .= $dx; 
-    } 
-    $key = substr($salted, 0, 32); 
-    $iv  = substr($salted, 32,16); 
-    $encrypted_data = openssl_encrypt(json_encode($value), 'aes-256-cbc', $key, true, $iv); 
-    $data = array("ct" => base64_encode($encrypted_data), "iv" => bin2hex($iv), "s" => bin2hex($salt)); 
-    return json_encode($data); 
-} 
- 
-</code> 
- 
-==== Execute ==== 
-<code> 
- 
-$json = file_get_contents('https://encryptedURL'); 
-$data = json_decode($json); 
-$secret = "YOUR PASSWORD"; 
-$rdat = Decrypt($secret, $json); 
-echo $rdat; 
- 
-</code> 
- 
-==== Example PHP ==== 
-<code> 
-$encrypted = Encrypt("my passphrase", "value to encrypt"); 
-$decrypted = Decrypt("my passphrase", $encrypted); 
-</code>