103 lines
3.4 KiB
C#
103 lines
3.4 KiB
C#
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.Security.Cryptography;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System;
|
|
|
|
public static class Encryptor
|
|
{
|
|
private static string hash = "@419$";
|
|
public static PaddingMode paddingMode = PaddingMode.PKCS7;
|
|
public static CipherMode cipherMode = CipherMode.ECB;
|
|
|
|
private static string charPool = "AKFLDJAHSPIWUROCNMZX";
|
|
|
|
public static string encrypt(string input)
|
|
{
|
|
byte[] data = UTF8Encoding.UTF8.GetBytes(input);
|
|
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
|
|
{
|
|
byte[] key = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
|
|
using (TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider() { Key=key, Mode = cipherMode, Padding = paddingMode })
|
|
{
|
|
ICryptoTransform ict = tds.CreateEncryptor();
|
|
byte[] results = ict.TransformFinalBlock(data, 0, data.Length);
|
|
return Convert.ToBase64String(results, 0, results.Length);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string decrypt(string input)
|
|
{
|
|
byte[] data = Convert.FromBase64String(input);
|
|
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
|
|
{
|
|
byte[] key = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
|
|
using (TripleDESCryptoServiceProvider tds = new TripleDESCryptoServiceProvider() { Key = key, Mode = cipherMode, Padding = paddingMode })
|
|
{
|
|
ICryptoTransform ict = tds.CreateDecryptor();
|
|
byte[] results = ict.TransformFinalBlock(data, 0, data.Length);
|
|
return UTF8Encoding.UTF8.GetString(results);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string intToString(int input){
|
|
char[] inputBytes = input.ToString().ToCharArray();
|
|
string output = "";
|
|
foreach(char c in inputBytes){
|
|
output += charPool[int.Parse(c.ToString())];
|
|
}
|
|
int luckyNumber = GetLuckyNumber(input);
|
|
|
|
string lastLetter = charPool.ToCharArray()[luckyNumber].ToString();
|
|
|
|
return output+lastLetter;
|
|
}
|
|
|
|
public static int stringToInt(string input){
|
|
char[] inputBytes = input.Remove(input.Length-1).ToCharArray();
|
|
string output = "";
|
|
foreach(char c in inputBytes){
|
|
for(int i=0; i < charPool.Length; i++){
|
|
if(charPool.ToCharArray()[i] == c){
|
|
output += i.ToString();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
char lastchar = input.ToCharArray()[input.Length-1];
|
|
|
|
int outputInt = int.Parse(output);
|
|
char luckyChar = charPool.ToCharArray()[GetLuckyNumber(outputInt)];
|
|
bool validated = luckyChar == lastchar;
|
|
|
|
|
|
if(validated){
|
|
return outputInt;
|
|
}else{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
public static int GetLuckyNumber(int input){
|
|
int luckyNumber=input;
|
|
while(luckyNumber >= 10){
|
|
int val = 0;
|
|
for(int i=0; i < luckyNumber.ToString().Length; i++){
|
|
val += int.Parse(luckyNumber.ToString().ToCharArray()[i].ToString());
|
|
}
|
|
|
|
luckyNumber = val;
|
|
}
|
|
|
|
return luckyNumber;
|
|
}
|
|
|
|
}
|