Files
SVSimServer/SVSim.BattleEngine/Engine/Cute/Cryptographer.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

145 lines
3.2 KiB
C#

using System;
using System.Globalization;
using System.Security.Cryptography;
using System.Text;
namespace Cute;
public class Cryptographer
{
public const int FBENCRYPT_BLOCK_SIZE = 32;
private static string encode_buf;
private static Random cRandom = new Random();
private static SHA1CryptoServiceProvider sha1 = null;
private static UTF8Encoding utf8 = null;
private static int random()
{
return cRandom.Next(1, 9);
}
public static string generateIvString()
{
string text = "";
for (int i = 0; i < 32; i++)
{
text += $"{random()}";
}
return text;
}
public static string generateKeyString()
{
string text = "";
for (int i = 0; i < 32; i++)
{
text += $"{cRandom.Next(0, 65535):x}";
}
return Convert.ToBase64String(Encoding.ASCII.GetBytes(text.ToString())).Substring(0, 32);
}
public static string encode(string dat)
{
int length = dat.Length;
encode_buf = $"{length:x4}";
foreach (char value in dat)
{
encode_buf += $"{random(),1:x}";
encode_buf += $"{random(),1:x}";
encode_buf += (char)(Convert.ToInt32(value) + 10);
encode_buf += $"{random(),1:x}";
}
encode_buf += generateIvString();
return encode_buf;
}
public static string decode(string dat)
{
if (dat == null || dat.Length < 4)
{
return dat;
}
int num = int.Parse(dat.Substring(0, 4), NumberStyles.AllowHexSpecifier);
string text = "";
int num2 = 2;
string text2 = dat.Substring(4, dat.Length - 4);
foreach (char value in text2)
{
if (num2 % 4 == 0)
{
text += (char)(Convert.ToInt32(value) - 10);
}
num2++;
if (text.Length >= num)
{
break;
}
}
return text;
}
public static string ComputeHash(string data)
{
if (string.IsNullOrEmpty(data))
{
return null;
}
SHA1CryptoServiceProvider sHA1CryptoServiceProvider = new SHA1CryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] array = sHA1CryptoServiceProvider.ComputeHash(bytes);
string text = "";
byte[] array2 = array;
foreach (byte b in array2)
{
text += $"{b:x2}";
}
sHA1CryptoServiceProvider.Clear();
return text;
}
public static string MakeMd5(string input)
{
MD5CryptoServiceProvider mD5CryptoServiceProvider = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(input + "r!I@ws8e5i=");
byte[] array = mD5CryptoServiceProvider.ComputeHash(bytes);
string text = "";
byte[] array2 = array;
foreach (byte b in array2)
{
text += b.ToString("x2");
}
mD5CryptoServiceProvider.Clear();
return text;
}
public static string ComputeSHA1(string seed)
{
if (sha1 == null)
{
sha1 = new SHA1CryptoServiceProvider();
}
if (utf8 == null)
{
utf8 = new UTF8Encoding();
}
if (string.IsNullOrEmpty(seed))
{
return "";
}
byte[] bytes = utf8.GetBytes(seed);
byte[] array = sha1.ComputeHash(bytes);
StringBuilder stringBuilder = new StringBuilder();
int num = array.Length;
for (int i = 0; i < num; i++)
{
stringBuilder.Append(Convert.ToString(array[i], 16).PadLeft(2, '0'));
}
sha1.Initialize();
return stringBuilder.ToString();
}
}