县级监管平台

EncryptHelper.cs 11KB

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