<?php 
 
/*
 
 +-----------------------------------------------------------------------+
 
 | This file is part of API5 RESTful SQLtoJSON                           |
 
 | Copyright (C) 2007-2018, Santo Nuzzolillo                             |
 
 |                                                                       |
 
 | Licensed under the GNU General Public License version 3 or            |
 
 | any later version with exceptions for skins & plugins.                |
 
 | See the LICENSE file for a full license statement.                    |
 
 |                                                                       |
 
 | Pduction                                                              |
 
 |   Date   : 02/16/2018                                                 |
 
 |   Time   : 12:47:27 PM                                                |
 
 |   Version: 0.0.1                                                      |
 
 +-----------------------------------------------------------------------+
 
 | Author: Santo Nuzzolilo <[email protected]>                       |
 
 +-----------------------------------------------------------------------+
 
*/
 
 
 
 
 
 
function cryptoJsAesDecrypt($passphrase, $jsonString){ 
    $jsondata = json_decode($jsonString, true); 
    try { 
        $salt = hex2bin($jsondata["s"]); 
        $iv  = hex2bin($jsondata["iv"]); 
    } catch(Exception $e) { return null; } 
    $ct = base64_decode($jsondata["ct"]); 
    $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); 
} 
 
 
function cryptoJsAesEncrypt($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); 
} 
 
 |