StringObfuscator.cs 2.2 KB

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