PHP
Encrypt
<?php
class AESEncrypt
{
public static function encrypt($data, $key, $iv)
{
$data = self::padString($data);
$encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_NO_PADDING, $iv);
$encrypted = base64_encode($encrypted);
$encrypted = str_replace(array('+','/','=') , array('-','_','') , $encrypted);
return $encrypted;
}
private static function padString($source)
{
$paddingChar = ' ';
$size = 16;
$x = strlen($source) % $size;
$padLength = $size - $x;
for ($i = 0;$i < $padLength;$i++)
{
$source .= $paddingChar;
}
return $source;
}
}
$data = 'SampleData';
$encryptData = AESEncrypt::encrypt($data, $ { KEY }, $ { IV });
echo $encryptData . "\n";
?>
Decrypt
<?php
class AESDecrypt
{
public static function decrypt($data, $key, $iv)
{
$data = str_replace(array('-','_') , array('+','/') , $data);
$data = base64_decode($data);
$decrypted = openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_NO_PADDING, $iv);
return utf8_encode(trim($decrypted));
}
}
$KEY = 'key1234567Sample'; // $ { KEY }
$IV = 'iv12345678Sample'; // $ { IV }
$encryptData = 'JYUwK_t1athMnX5mbEQ_stdBbYYgfIeC7utswa5A3Dw4vuORvpkTDWfmkFqpPtOPr_PJJA2WJLD4dBZV0
qCnWAmBB7Fpuy7Rkgpbs-Xez6WlpKCApE4uY2TC0QegtWnj';
$decryptData = AESDecrypt::decrypt($encryptData, $KEY, $IV);
echo $decryptData . "\n";
// decrypt data => {"action":47,"ts":1632385601439,"lang":"en","gType":"0","mType":"8001","windowMode":"2"}
?>
Call API
Example: Action 47 Get Demo Game Launch URL
AESEncrypt: Please refer to the “Encrypt” sample code
<?php
$dc = $ { DC };
$key = $ { KEY };
$iv = $ { IV };
$apiUrl = $ { API URL };
$now = round(microtime(true) * 1000);
// prepare action 47 data
$jsonString = '{"action":47, "ts":' . $now . ', "lang":"en", "gType":"0", "mType":"8001",
"windowMode":"2"}';
// encrypt data
$encryptData = AESEncrypt::encrypt($jsonString, $key, $iv);
$data = array(
'dc' => $dc,
'x' => $encryptData
);
// post
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
//parse json
echo $response;
$json = json_decode($response, true);
?>