PHP Classes

File: api5/api5/services/cryptojs-aes/cryptojs-aes.php

Recommend this page to a friend!
  Classes of Santo Nuzzolillo   PHP AJAX REST API 5 Call   api5/api5/services/cryptojs-aes/cryptojs-aes.php   Download  
File: api5/api5/services/cryptojs-aes/cryptojs-aes.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: PHP AJAX REST API 5 Call
Execute SQL queries and return JSON responses
Author: By
Last change:
Date: 6 years ago
Size: 2,387 bytes
 

Contents

Class file image Download
<?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/12/2018 |
 | Time : 05:30:44 PM |
 | Version: 0.0.1 |
 +-----------------------------------------------------------------------+
 | Author: Santo Nuzzolilo <snuzzolillo@gmail.com> |
 +-----------------------------------------------------------------------+
*/





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);
}