1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?php /** * Helper library for CryptoJS AES encryption/decryption * Allow you to use AES encryption on client side and server side vice versa * * @author BrainFooLong (bfldev.com) * @link https://github.com/brainfoolong/cryptojs-aes-php */
/** * Decrypt data from a CryptoJS json encoding string * * @param mixed $passphrase * @param mixed $jsonString * @return mixed */ if(!function_exists('cryptoJsAesDecrypt')) { function cryptoJsAesDecrypt($jsonString) { $passphrase = cryptoJSPW(); $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); // return ($iv); $data = openssl_decrypt($ct, 'aes-256-cbc', $key, true, $iv); return json_decode($data, true); } }
/** * Encrypt value to a cryptojs compatiable json encoding string * * @param mixed $passphrase * @param mixed $value * @return string */ if(!function_exists('cryptoJsAesEncrypt')) { function cryptoJsAesEncrypt($value) { $passphrase = cryptoJSPW(); $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); } }
if(!function_exists('cryptoJSPW')){ function cryptoJSPW(){ return 'aGm9Ss20rCZHnnnpZzoX6zWL246jkHHt4Vi9if4qWHiaqo6oqZJrdYyKZDMmxGM4'; } }
|