ro-webgl/Assets/Plugins/SDK/FairGuard.cs
2021-12-21 09:40:39 +08:00

123 lines
3.4 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System;
public static class FairGuard{
private static bool isInitialized = false;
private const string version = "1.10.80";
private const string strUUU_0 = "Ce90DysQNIJUCHKmRNU3D5iWaTALey+dzOzyfv8CUnjUI06FmqEiozthUnmjKuHM2xULzwMWetEtieUBfjKNvQ==";
private const string strHHH_0 = "8WXEpyGHQhkngJnHyBoGS4boUvmc4UFlZxs/auPu58qy7/WHv2CfVz6O9bfL+rpivAB7z4hIILTgz4nwtHLIGw==";
private const string strIII_0 = "e6WqwzKWyswU8joVaNYOnA==";
private const string strSSS_0 = "5OXMqsdS0ZtPf7WWtwlgB6e7yFUhXSVdytweVgUEXsA=";
private const string strXXX_0 = "5OXMqsdS0ZtPf7WWtwlgB+QOgX9ubkaYohDeyjjyBg0=";
private static string strUUU = "";
private static string strHHH = "";
private static string strIII = "";
private static string strSSS = "";
private static string strXXX = "";
public static string Decrypt(string cipherText)
{
string EncryptionKey = "f7f8edd10906b53544";
cipherText = cipherText.Replace(" ", "+");
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0xf6, 0x92, 0x90, 0x8c, 0x7f, 0x23, 0x4f, 0xc9, 0x13, 0x2d, 0x56, 0x3d, 0x66 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(cipherBytes, 0, cipherBytes.Length);
cs.Close();
}
cipherText = Encoding.Unicode.GetString(ms.ToArray());
}
}
return cipherText;
}
public static void Init()
{
if (isInitialized)
{
return;
}
#if UNITY_ANDROID
strUUU = Decrypt (strUUU_0);
strHHH = Decrypt (strHHH_0);
strIII = Decrypt (strIII_0);
strSSS = Decrypt (strSSS_0);
strXXX = Decrypt (strXXX_0);
initSDK ("");
#endif
isInitialized = true;
}
private static void initSDK(string gameKey)
{
#if UNITY_ANDROID
try {
using (var actClass = new AndroidJavaClass(strUUU)) {
AndroidJavaClass SWPClass = new AndroidJavaClass (strHHH);
if(SWPClass != null) {
SWPClass.CallStatic(strIII, gameKey);
}
}
}
catch (System.Exception e)
{
System.Console.Write(" " + e.ToString());
}
#endif
}
public static void setUserInfo(string roleName, string roleAccount,string roleId)
{
#if UNITY_ANDROID
try {
using (var actClass = new AndroidJavaClass(strUUU)) {
AndroidJavaClass SWPClass = new AndroidJavaClass (strHHH);
if(SWPClass != null) {
SWPClass.CallStatic(strSSS,roleName,roleAccount, roleId);
}
}
}
catch (System.Exception e)
{
System.Console.Write(" " + e.ToString());
}
#endif
}
public static void setUserInfoEx(string roleName, string roleAccount,string roleId, String serverName, String channelName, string gameJson)
{
#if UNITY_ANDROID
try {
using (var actClass = new AndroidJavaClass(strUUU)) {
AndroidJavaClass SWPClass = new AndroidJavaClass (strHHH);
if(SWPClass != null) {
SWPClass.CallStatic(strXXX,roleName,roleAccount, roleId,serverName,channelName,gameJson);
}
}
}
catch (System.Exception e)
{
System.Console.Write(" " + e.ToString());
}
#endif
}
}