Golf2D/Assets/Scripts/Encryptor.cs
2023-05-20 13:49:50 +05:30

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;
}
}