Skip to Content

C#

Encrypt

using System; using System.Security.Cryptography; using System.Text; public class AESEncrypt { public static string encrypt(string data, string key, string iv) { byte[] encrypted; using(SymmetricAlgorithm des = Rijndael.Create()) { byte[] inputByteArray = Encoding.UTF8.GetBytes(data); des.Key = Encoding.UTF8.GetBytes(key); des.IV = Encoding.UTF8.GetBytes(iv); var encrypter = des.CreateEncryptor(); encrypted = encrypter.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length); } var URL_Safe_AESEncrypt_String = Convert.ToBase64String(encrypted) .TrimEnd('=').Replace('+', '-').Replace('/', '_'); return URL_Safe_AESEncrypt_String; } public static void Main(string[] args) { string data = "SampleData"; string encryptData = encrypt(data, $ { KEY }, $ { IV }); System.Console.WriteLine(encryptData); } }

Decrypt

using System; using System.Text; using System.Security.Cryptography; using System.IO; public static class AESDecrypt { public static string decrypt(string encryptData, string key, string iv) { string decryptData = ""; try { AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); aes.BlockSize = 128; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.None; aes.Key = Encoding.UTF8.GetBytes(key); aes.IV = Encoding.UTF8.GetBytes(iv); string source = encryptData.Replace('-', '+').Replace('_', '/'); int addPaddingCounts = (4 - (source.Length % 4)) % 4; for (int i = 0; i < addPaddingCounts; i++) { source += "="; } byte[] encryptDataByteArray = Convert.FromBase64String(source); using(MemoryStream ms = new MemoryStream()) { using(CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(encryptDataByteArray, 0, encryptDataByteArray.Length); cs.FlushFinalBlock(); decryptData = Encoding.UTF8.GetString(ms.ToArray()); } } } catch (Exception e) { Console.WriteLine(e.Message); } return decryptData; } public static void Main(string[] args) { string encryptData = "C2D2P01hhevu38f8uC8aOA"; string key = "key1234567Sample"; // $ { KEY } string iv = "iv12345678Sample"; // $ { IV } string decryptData = decrypt(encryptData, key, iv); Console.WriteLine(decryptData); // return “SampleData” } }

Call API

Example: Action 47 Get Demo Game Launch URL

AESEncrypt: Please refer to the “Encrypt” sample code

using System; using Newtonsoft.Json.Linq; using RestSharp; public class Sample { public static void Main(string[] args) { string dc = $ { DC }; string key = $ { KEY }; string iv = $ { IV }; string apiUrl = $ { API URL }; // prepare action 47 data string data = @ "{'action':47,'ts':" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + ",'lang':'en','gType':'0','mType': '8001', 'windowMode': 2}"; // encrypt data string x = AESEncrypt.encrypt(data, key, iv); // check environment Settings file var client = new RestClient(apiUrl); // post var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("content-type", "application/x-www-form-urlencoded"); request.AddParameter("application/x-www-form-urlencoded", "dc=" + dc + "&x=" + x, ParameterType.RequestBody); IRestResponse response = client.Execute(request); } }
Last updated on