74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
using System;
|
||
using System.Text;
|
||
|
||
namespace I2.Loc
|
||
{
|
||
// Simple String Obfucator
|
||
// (not particularly safe, but will stop most players from hacking your strings and its FAST)
|
||
|
||
public class StringObfucator
|
||
{
|
||
// Change this for your projects if you need extra security
|
||
public static char[] StringObfuscatorPassword = "ÝúbUu¸CÁ§*4PÚ©-᩾@T6Dl±ÒWâuzÅm4GÐóØ$=Íg,¥Që®iKEßr¡×60Ít4öÃ~^«y:Èd1<QÛÝúbUu¸CÁ§*4PÚ©-᩾@T6Dl±ÒWâuzÅm4GÐóØ$=Íg,¥Që®iKEßr¡×60Ít4öÃ~^«y:Èd".ToCharArray();
|
||
|
||
public static string Encode(string NormalString)
|
||
{
|
||
try
|
||
{
|
||
var str = XoREncode(NormalString);
|
||
return ToBase64(str);
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
|
||
|
||
public static string Decode(string ObfucatedString)
|
||
{
|
||
try
|
||
{
|
||
var str = FromBase64(ObfucatedString);
|
||
return XoREncode(str);
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
|
||
static string ToBase64(string regularString)
|
||
{
|
||
byte[] toEncodeAsBytes = Encoding.UTF8.GetBytes(regularString);
|
||
return Convert.ToBase64String(toEncodeAsBytes);
|
||
}
|
||
|
||
static string FromBase64(string base64string)
|
||
{
|
||
byte[] encodedDataAsBytes = Convert.FromBase64String(base64string);
|
||
return Encoding.UTF8.GetString(encodedDataAsBytes, 0, encodedDataAsBytes.Length);
|
||
}
|
||
|
||
static string XoREncode(string NormalString)
|
||
{
|
||
try
|
||
{
|
||
var pass = StringObfuscatorPassword;
|
||
var buffer = NormalString.ToCharArray();
|
||
|
||
var passlen = pass.Length;
|
||
|
||
for (int i = 0, imax = buffer.Length; i < imax; ++i)
|
||
buffer[i] = (char)(buffer[i] ^ pass[i % passlen] ^ (byte)(i % 2 == 0 ? i * 23 : -i * 51));
|
||
|
||
return new string(buffer);
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
|
||
}
|
||
} |