code_en_de.cs
上传用户:chizxy
上传日期:2014-11-29
资源大小:407k
文件大小:2k
源码类别:

其他行业

开发平台:

C#

  1. using System;
  2. using System.Text;
  3. namespace MKIms3
  4. {
  5. public class code_en_de
  6. {
  7. private static char[] key = "yA36zA48dEhfrvghGRg57h5UlDv3".ToCharArray();
  8. /// <summary>
  9. /// 字符串解密
  10. /// </summary>
  11. /// <param name="x">需要解密的字符</param>
  12. /// <returns></returns>
  13. public static string Decode(string x)
  14. {
  15. System.Text.StringBuilder sb = new System.Text.StringBuilder();
  16. char[] ca = x.ToCharArray();
  17. for (int i = 0; i < (ca.Length - 2); i += 2)
  18. {
  19. string s1 = "" + ca[i + 2] + ca[i + 3];
  20. string s2 = "" + System.Convert.ToString((byte) key[(i / 2) % 13], 16);
  21. string s3 = "" + ca[i] + ca[i + 1];
  22. int m = (System.Convert.ToInt32(s1, 16) ^ System.Convert.ToInt32(s2, 16)) - System.Convert.ToInt32(s3, 16);
  23. if (m < 0)
  24. {
  25. m += 255;
  26. }
  27. sb.Append((char) ((short) m));
  28. }
  29. return sb.ToString();
  30. }
  31. /// <summary>
  32. /// 字符串加密
  33. /// </summary>
  34. /// <param name="x">需要被加密的字符串</param>
  35. /// <returns></returns>
  36. public static string Encode(string x)
  37. {
  38. char[] ca = x.ToCharArray();
  39. int k = new System.Random().Next(255);
  40. System.Text.StringBuilder sb = null;
  41. if (k > 15)
  42. {
  43. sb = new System.Text.StringBuilder("" + System.Convert.ToString(k, 16));
  44. }
  45. else
  46. {
  47. sb = new System.Text.StringBuilder("0" + System.Convert.ToString(k, 16));
  48. }
  49. int m = System.Convert.ToInt32(sb.ToString(), 16);
  50. for (int i = 0; i < ca.Length; i++)
  51. {
  52. if ((ca[i] + m) > 255)
  53. {
  54. m = ((ca[i] + m) - 255) ^ key[i % 13];
  55. }
  56. else
  57. {
  58. m = (ca[i] + m) ^ key[i % 13];
  59. }
  60. if (m > 15)
  61. {
  62. sb.Append(System.Convert.ToString(m, 16));
  63. }
  64. else
  65. {
  66. sb.Append("0" + System.Convert.ToString(m, 16));
  67. }
  68. }
  69. return sb.ToString().ToUpper();
  70. }
  71. /// <summary>
  72. /// 将加密过的字符串解密后以数组的方式返回
  73. /// </summary>
  74. /// <param name="mima">需要解密的字符串,(本系统配制文件中读取出来的)</param>
  75. /// <returns>包含数据库连接信息的数组</returns>
  76. public static string[] get_char(string mima)
  77. {
  78. string[] chae = mima.Split('|');
  79. for(int i=0;i<chae.Length;i++)
  80. {
  81. chae[i]=code_en_de.Decode(chae[i]);
  82. }
  83. return chae;
  84. }
  85. }
  86. }