StringObfuscator.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. namespace I2.Loc
  3. {
  4. // Simple String Obfucator
  5. // (not particularly safe, but will stop most players from hacking your strings and its FAST)
  6. public class StringObfucator
  7. {
  8. // Change this for your projects if you need extra security
  9. 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();
  10. public static string Encode(string NormalString)
  11. {
  12. try
  13. {
  14. var str = XoREncode(NormalString);
  15. return ToBase64(str);
  16. }
  17. catch (System.Exception)
  18. {
  19. return null;
  20. }
  21. }
  22. public static string Decode(string ObfucatedString)
  23. {
  24. try
  25. {
  26. var str = FromBase64(ObfucatedString);
  27. return XoREncode(str);
  28. }
  29. catch (System.Exception)
  30. {
  31. return null;
  32. }
  33. }
  34. static string ToBase64(string regularString)
  35. {
  36. byte[] toEncodeAsBytes = System.Text.Encoding.UTF8.GetBytes(regularString);
  37. return System.Convert.ToBase64String(toEncodeAsBytes);
  38. }
  39. static string FromBase64(string base64string)
  40. {
  41. byte[] encodedDataAsBytes = System.Convert.FromBase64String(base64string);
  42. return System.Text.Encoding.UTF8.GetString(encodedDataAsBytes, 0, encodedDataAsBytes.Length);
  43. }
  44. static string XoREncode(string NormalString)
  45. {
  46. try
  47. {
  48. var pass = StringObfuscatorPassword;
  49. var buffer = NormalString.ToCharArray();
  50. var passlen = pass.Length;
  51. for (int i = 0, imax = buffer.Length; i < imax; ++i)
  52. buffer[i] = (char)(buffer[i] ^ pass[i % passlen] ^ (byte)(i % 2 == 0 ? i * 23 : -i * 51));
  53. return new string(buffer);
  54. }
  55. catch (System.Exception)
  56. {
  57. return null;
  58. }
  59. }
  60. }
  61. }