DESEncrypt.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;
  4. using System.IO;
  5. namespace CZTS.COMM
  6. {
  7. /// <summary>
  8. /// DES加密/解密类。
  9. /// </summary>
  10. public class DESEncrypt
  11. {
  12. #region ========解密一========
  13. //默认密钥向量
  14. //private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
  15. private static byte[] Keys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F };
  16. /// <summary>
  17. /// 解密的key 与加密key相同
  18. /// </summary>
  19. private static string decryptKey = "36CBB25BB63A43E9B7399EAE796F41B9";
  20. /// <summary>
  21. /// AES解密
  22. /// </summary>
  23. /// <param name="decryptString">需要解密的字符串</param>
  24. /// <param name="decryptKey">需要解密的Key</param>
  25. /// <returns></returns>
  26. public static string Decode(string decryptString)
  27. {
  28. try
  29. {
  30. decryptKey = Utils.GetSubString(decryptKey, 32, "");
  31. decryptKey = decryptKey.PadRight(32, ' ');
  32. RijndaelManaged rijndaelProvider = new RijndaelManaged();
  33. rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey);
  34. rijndaelProvider.IV = Keys;
  35. ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor();
  36. byte[] inputData = Convert.FromBase64String(decryptString);
  37. byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);
  38. return Encoding.UTF8.GetString(decryptedData);
  39. }
  40. catch
  41. {
  42. return "";
  43. }
  44. }
  45. #endregion
  46. #region ========解密二========
  47. //默认密钥向量
  48. private static byte[] DESKeys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
  49. /// <summary>
  50. /// 解密的key
  51. /// </summary>
  52. private static string DESdecryptKey = "!@#$%^&*";
  53. /// <summary>
  54. /// DES解密字符串
  55. /// </summary>
  56. /// <param name="decryptString">待解密的字符串</param>
  57. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  58. public static string DESDecode(string decryptString)
  59. {
  60. try
  61. {
  62. DESdecryptKey = Utils.GetSubString(DESdecryptKey, 8, "");
  63. DESdecryptKey = DESdecryptKey.PadRight(8, ' ');
  64. byte[] rgbKey = Encoding.UTF8.GetBytes(DESdecryptKey);
  65. byte[] rgbIV = DESKeys;
  66. byte[] inputByteArray = Convert.FromBase64String(decryptString);
  67. DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
  68. MemoryStream mStream = new MemoryStream();
  69. CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  70. cStream.Write(inputByteArray, 0, inputByteArray.Length);
  71. cStream.FlushFinalBlock();
  72. return Encoding.UTF8.GetString(mStream.ToArray());
  73. }
  74. catch
  75. {
  76. return "";
  77. }
  78. }
  79. #endregion
  80. #region ========解密三========
  81. /// <summary>
  82. /// 解密
  83. /// </summary>
  84. /// <param name="Text"></param>
  85. /// <returns></returns>
  86. public static string Decrypt(string Text)
  87. {
  88. return Decrypt(Text, "jijianguo");
  89. }
  90. /// <summary>
  91. /// 解密数据
  92. /// </summary>
  93. /// <param name="Text"></param>
  94. /// <param name="sKey"></param>
  95. /// <returns></returns>
  96. public static string Decrypt(string Text, string sKey)
  97. {
  98. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  99. int len;
  100. len = Text.Length / 2;
  101. byte[] inputByteArray = new byte[len];
  102. int x, i;
  103. for (x = 0; x < len; x++)
  104. {
  105. i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
  106. inputByteArray[x] = (byte)i;
  107. }
  108. des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
  109. des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
  110. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  111. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
  112. cs.Write(inputByteArray, 0, inputByteArray.Length);
  113. cs.FlushFinalBlock();
  114. return Encoding.Default.GetString(ms.ToArray());
  115. }
  116. #endregion
  117. }
  118. }