DESHelper.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using log4net;
  7. using log4net.Config;
  8. using System.Security.Cryptography;
  9. using System.IO.Compression;
  10. namespace Common
  11. {
  12. /// <summary>
  13. /// DES加密解密
  14. /// </summary>
  15. public class DESHelper
  16. {
  17. #region des加密
  18. /// <summary>
  19. /// DES加密
  20. /// </summary>
  21. /// <param name="str">需要加密的</param>
  22. /// <param name="sKey">密匙</param>
  23. /// <returns></returns>
  24. public string DesEncrypt(string input)
  25. {
  26. AesCryptoServiceProvider des = new AesCryptoServiceProvider();
  27. byte[] inputByteArray = Encoding.UTF8.GetBytes(input);
  28. des.Key = ASCIIEncoding.ASCII.GetBytes("lizxlylwkdqzymyzsqblt666");
  29. des.IV = ASCIIEncoding.ASCII.GetBytes("txwl888txwl20201");
  30. MemoryStream ms = new MemoryStream();
  31. CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
  32. cs.Write(inputByteArray, 0, inputByteArray.Length);
  33. cs.FlushFinalBlock();
  34. byte[] message = ms.ToArray();
  35. string returnStr = "";
  36. if (message != null)
  37. {
  38. for (int i = 0; i < message.Length; i++)
  39. {
  40. returnStr += message[i].ToString("X2");
  41. }
  42. }
  43. return returnStr;
  44. }
  45. #endregion
  46. #region des解密 判断请求是否过期
  47. /// <summary>
  48. /// 解密
  49. /// </summary>
  50. /// <param name="input"></param>
  51. /// <returns></returns>
  52. public string DesDecrypt(string input)
  53. {
  54. try
  55. {
  56. byte[] inputBytes = HexStringToByteArray(input);
  57. //byte[] inputBytes = Convert.FromBase64String(input);
  58. using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
  59. {
  60. aesAlg.Key = ASCIIEncoding.ASCII.GetBytes("lizxlylwkdqzymyzsqblt666");
  61. aesAlg.IV = ASCIIEncoding.ASCII.GetBytes("txwl888txwl20201");
  62. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
  63. using (MemoryStream msEncrypt = new MemoryStream(inputBytes))
  64. {
  65. using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, decryptor, CryptoStreamMode.Read))
  66. {
  67. using (StreamReader srEncrypt = new StreamReader(csEncrypt))
  68. {
  69. return srEncrypt.ReadToEnd();
  70. }
  71. }
  72. }
  73. }
  74. }
  75. catch (Exception e)
  76. {
  77. return "";
  78. }
  79. }
  80. /// <summary>
  81. /// 将指定的16进制字符串转换为byte数组
  82. /// </summary>
  83. /// <param name="s">16进制字符串(如:“7F 2C 4A”或“7F2C4A”都可以)</param>
  84. /// <returns>16进制字符串对应的byte数组</returns>
  85. public static byte[] HexStringToByteArray(string s)
  86. {
  87. s = s.Replace(" ", "");
  88. byte[] buffer = new byte[s.Length / 2];
  89. for (int i = 0; i < s.Length; i += 2)
  90. buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
  91. return buffer;
  92. }
  93. public bool IsMtoken(string timeStamp)
  94. {
  95. var time = ConvertStringToDateTime(timeStamp);
  96. if (DateTime.Now > time.AddMinutes(1))
  97. return false;
  98. else
  99. return true;
  100. }
  101. /// <summary>
  102. /// 时间戳转为C#格式时间
  103. /// </summary>
  104. /// <param name=”timeStamp”></param>
  105. /// <returns></returns>
  106. private DateTime ConvertStringToDateTime(string timeStamp)
  107. {
  108. DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
  109. long lTime = long.Parse(timeStamp + "0000");
  110. TimeSpan toNow = new TimeSpan(lTime);
  111. return dtStart.Add(toNow);
  112. }
  113. #endregion
  114. #region GZip压缩
  115. /// <summary>
  116. /// GZip压缩
  117. /// </summary>
  118. /// <param name="rawData"></param>
  119. /// <returns></returns>
  120. public byte[] Compress(byte[] rawData)
  121. {
  122. MemoryStream ms = new MemoryStream();
  123. GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
  124. compressedzipStream.Write(rawData, 0, rawData.Length);
  125. compressedzipStream.Close();
  126. return ms.ToArray();
  127. }
  128. #endregion
  129. }
  130. }