商丘12345 后端

EncryptHelper.cs 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. using System;
  2. using System.Text;
  3. using System.Security.Cryptography;
  4. namespace CallCenter_SQ.Utility
  5. {
  6. public class EncryptHelper
  7. {
  8. private static readonly string AESKEY = "GHYU80DV3465QSFG";//16或者32位
  9. private static readonly string DESKEY = "PORG56JK";//8位
  10. /// <summary>
  11. /// AES加密
  12. /// </summary>
  13. /// <param name="data">要加密的字符串</param>
  14. /// <returns>加密后的字符串</returns>
  15. public static string EncryptAES(string data)
  16. {
  17. try
  18. {
  19. var aes = new RijndaelManaged();
  20. byte[] bData = Encoding.UTF8.GetBytes(data);
  21. aes.Key = Encoding.UTF8.GetBytes(AESKEY);
  22. aes.IV = Encoding.UTF8.GetBytes(AESKEY);
  23. aes.Mode = CipherMode.ECB;
  24. aes.Padding = PaddingMode.PKCS7;
  25. ICryptoTransform iCryptoTransform = aes.CreateEncryptor();
  26. byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
  27. return Convert.ToBase64String(bResult); //返回base64加密;
  28. //return ByteToHex(bResult); //返回十六进制数据;
  29. }
  30. catch
  31. {
  32. return "Encrypt Faild";
  33. }
  34. }
  35. /// <summary>
  36. /// AES加密
  37. /// </summary>
  38. /// <param name="data">要加密的字符串</param>
  39. /// <param name="sKey">密钥串(16位或32位)</param>
  40. /// <returns>加密后的字符串</returns>
  41. public static string EncryptAES(string data, string sKey)
  42. {
  43. try
  44. {
  45. var aes = new RijndaelManaged();
  46. byte[] bData = Encoding.UTF8.GetBytes(data);
  47. aes.Key = Encoding.UTF8.GetBytes(sKey);
  48. aes.IV = Encoding.UTF8.GetBytes(sKey);
  49. aes.Mode = CipherMode.ECB;
  50. aes.Padding = PaddingMode.PKCS7;
  51. ICryptoTransform iCryptoTransform = aes.CreateEncryptor();
  52. byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
  53. return Convert.ToBase64String(bResult); //返回base64加密;
  54. //return ByteToHex(bResult); //返回十六进制数据;
  55. }
  56. catch
  57. {
  58. return "Encrypt Faild";
  59. }
  60. }
  61. /// <summary>
  62. /// AES解密
  63. /// </summary>
  64. /// <param name="data">要解密的字符串</param>
  65. /// <returns>解密后的字符串</returns>
  66. public static string DecryptAES(string data)
  67. {
  68. try
  69. {
  70. data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  71. var aes = new RijndaelManaged();
  72. byte[] bData = Convert.FromBase64String(data); //解密base64;
  73. //byte[] bData = HexToByte(data); //16进制to byte[];
  74. aes.Key = Encoding.UTF8.GetBytes(AESKEY);
  75. aes.IV = Encoding.UTF8.GetBytes(AESKEY);
  76. aes.Mode = CipherMode.ECB;
  77. aes.Padding = PaddingMode.PKCS7;
  78. ICryptoTransform iCryptoTransform = aes.CreateDecryptor();
  79. byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
  80. return Encoding.UTF8.GetString(bResult);
  81. }
  82. catch
  83. {
  84. return "";
  85. }
  86. }
  87. /// <summary>
  88. /// AES解密
  89. /// </summary>
  90. /// <param name="data">要解密的字符串</param>
  91. /// <param name="sKey">密钥串(16位或32位字符串)</param>
  92. /// <returns>解密后的字符串</returns>
  93. public static string DecryptAES(string data, string sKey)
  94. {
  95. try
  96. {
  97. data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  98. var aes = new RijndaelManaged();
  99. byte[] bData = Convert.FromBase64String(data); //解密base64;
  100. // byte[] bData = HexToByte(data); //16进制to byte[];
  101. aes.Key = Encoding.UTF8.GetBytes(sKey);
  102. aes.IV = Encoding.UTF8.GetBytes(sKey);
  103. aes.Mode = CipherMode.ECB;
  104. aes.Padding = PaddingMode.PKCS7;
  105. ICryptoTransform iCryptoTransform = aes.CreateDecryptor();
  106. byte[] bResult = iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
  107. return Encoding.UTF8.GetString(bResult);
  108. }
  109. catch (Exception e)
  110. {
  111. LogFactory.GetLogger("333").Warn(e.ToString());
  112. return e.Message ;
  113. }
  114. }
  115. /// <summary>
  116. /// DES加密
  117. /// </summary>
  118. /// <param name="data">要加密的字符串</param>
  119. /// <returns>加密后的字符串</returns>
  120. public static string EncryptDES(string data)
  121. {
  122. try
  123. {
  124. DES des = new DESCryptoServiceProvider();
  125. des.Mode = CipherMode.ECB;
  126. des.Key = Encoding.UTF8.GetBytes(DESKEY);
  127. des.IV = Encoding.UTF8.GetBytes(DESKEY);
  128. byte[] bytes = Encoding.UTF8.GetBytes(data);
  129. byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  130. return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
  131. //return ByteToHex(resultBytes);//十六位
  132. }
  133. catch
  134. {
  135. return "";
  136. }
  137. }
  138. /// <summary>
  139. /// DES加密
  140. /// </summary>
  141. /// <param name="data">要加密的字符串</param>
  142. /// <param name="key">密钥串(8位字符串)</param>
  143. /// <returns>加密后的字符串</returns>
  144. public static string EncryptDES(string data, string key)
  145. {
  146. try
  147. {
  148. DES des = new DESCryptoServiceProvider();
  149. des.Mode = CipherMode.ECB;
  150. des.Key = Encoding.UTF8.GetBytes(key);
  151. des.IV = Encoding.UTF8.GetBytes(key);
  152. byte[] bytes = Encoding.UTF8.GetBytes(data);
  153. byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  154. return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
  155. // return ByteToHex(resultBytes);//十六位
  156. }
  157. catch
  158. {
  159. return "";
  160. }
  161. }
  162. /// <summary>
  163. /// DES解密
  164. /// </summary>
  165. /// <param name="data">要解密的字符串</param>
  166. /// <returns>解密后的字符串</returns>
  167. public static string DecryptDES(string data)
  168. {
  169. try
  170. {
  171. //data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  172. DES des = new DESCryptoServiceProvider();
  173. des.Mode = CipherMode.ECB;
  174. des.Key = Encoding.UTF8.GetBytes(DESKEY);
  175. des.IV = Encoding.UTF8.GetBytes(DESKEY);
  176. byte[] bytes = Convert.FromBase64String(data); //解密base64;
  177. // byte[] bytes = HexToByte(data); //16进制to byte[];
  178. byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  179. return Encoding.UTF8.GetString(resultBytes);
  180. }
  181. catch
  182. {
  183. return "";
  184. }
  185. }
  186. /// <summary>
  187. /// DES解密
  188. /// </summary>
  189. /// <param name="data">要解密的字符串</param>
  190. /// <param name="key">密钥串(8位字符串)</param>
  191. /// <returns>解密后的字符串</returns>
  192. public static string DecryptDES(string data, string key)
  193. {
  194. try
  195. {
  196. //data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  197. DES des = new DESCryptoServiceProvider();
  198. des.Mode = CipherMode.ECB;
  199. des.Key = Encoding.UTF8.GetBytes(key);
  200. des.IV = Encoding.UTF8.GetBytes(key);
  201. byte[] bytes = Convert.FromBase64String(data); //解密base64;
  202. // byte[] bytes = HexToByte(data); //16进制to byte[];
  203. byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  204. return Encoding.UTF8.GetString(resultBytes);
  205. }
  206. catch
  207. {
  208. return "";
  209. }
  210. }
  211. // method to convert hex string into a byte array
  212. private static byte[] HexToByte(string data)
  213. {
  214. data = data.Replace(" ", "");
  215. var comBuffer = new byte[data.Length / 2];
  216. for (int i = 0; i < data.Length; i += 2)
  217. comBuffer[i / 2] = Convert.ToByte(data.Substring(i, 2), 16);
  218. return comBuffer;
  219. }
  220. // method to convert a byte array into a hex string
  221. private static string ByteToHex(byte[] comByte)
  222. {
  223. var builder = new StringBuilder(comByte.Length * 3);
  224. foreach (byte data in comByte)
  225. builder.Append(Convert.ToString(data, 16).PadLeft(2, '0').PadRight(3, ' '));
  226. return builder.ToString().ToUpper().Replace(" ", "");
  227. }
  228. /// <summary>
  229. /// md5
  230. /// </summary>
  231. /// <param name="normalTxt"></param>
  232. /// <returns></returns>
  233. public static string MD5Encrypt(string normalTxt)
  234. {
  235. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(normalTxt, "MD5").ToLower();
  236. }
  237. /// <summary>
  238. /// sha1
  239. /// </summary>
  240. /// <param name="normalTxt"></param>
  241. /// <returns></returns>
  242. public static string SHA1Encrypt(string normalTxt)
  243. {
  244. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(normalTxt, "SHA1").ToLower();
  245. }
  246. }
  247. }