JavaScript (Node.js)
Encrypt
const CryptoJS = require("crypto-js");
function AESEncrypt(data, aesKey, aesIv) {
const key = CryptoJS.enc.Utf8.parse(aesKey);
const iv = CryptoJS.enc.Utf8.parse(aesIv);
const encrypted = CryptoJS.AES.encrypt(data.trim(), key, {
iv,
padding: CryptoJS.pad.ZeroPadding,
}).toString();
return base64EncodeUrl(encrypted);
}
function base64EncodeUrl(str) {
return str.replace(/\\+/g, "-").replace(/\\//g, "_").replace(/=+$/, "");
}
const data = "SampleData";
const encryptData = AESEncrypt(data, $ { KEY }, $ { IV });
console.log(encryptData);
Decrypt
const CryptoJS = require("crypto-js");
function AesDecrypt(encryptedString, aesKey, aesIv) {
const key = CryptoJS.enc.Utf8.parse(aesKey);
const iv = CryptoJS.enc.Utf8.parse(aesIv);
const decrypted = CryptoJS.AES.decrypt(
base64DecodeUrl(encryptedString.trim()),
key,
{
iv,
padding: CryptoJS.pad.ZeroPadding,
}
);
return CryptoJS.enc.Utf8.stringify(decrypted);
}
function base64DecodeUrl(str) {
str = (str + "===").slice(0, str.length + (str.length % 4));
return str.replace(/-/g, "+").replace(/_/g, "/");
}
const encryptData = "GhKRVa6BHoOJAhjVYMKuFw";
const key = "key1234567Sample"; // $ { KEY }
const iv = "iv12345678Sample"; // $ { IV }
const decryptData = AesDecrypt(encryptData, key, iv);
console.log(decryptData); // return “SampleData”
Call API
Example: Action 47 Get Demo Game Launch URL
AESEncrypt: Please refer to the “Encrypt” sample code
const aesUtil = require("./AESEncrypt");
const axios = require("axios");
const qs = require("querystring");
const dc = $ { DC };
const key = $ { KEY };
const iv = $ { IV };
const apiUrl = $ { API URL };
const axiosInstance = axios.create({
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
// prepare action 47 data
const data = {
action: 47,
ts: new Date().getTime(),
lang: "en",
gType: "0",
mType: "8001",
windowMode: "2",
};
const x = aesUtil.AESEncrypt(JSON.stringify(data), key, iv);
axiosInstance.post(apiUrl, qs.stringify({ dc, x })).then(({ data }) => {
console.log("data:", data);
});