新野县12345_后端

EncryptHelper.cs 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. using System;
  2. using System.Text;
  3. using System.Security.Cryptography;
  4. namespace CallCenter.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
  110. {
  111. return "";
  112. }
  113. }
  114. /// <summary>
  115. /// DES加密
  116. /// </summary>
  117. /// <param name="data">要加密的字符串</param>
  118. /// <returns>加密后的字符串</returns>
  119. public static string EncryptDES(string data)
  120. {
  121. try
  122. {
  123. DES des = new DESCryptoServiceProvider();
  124. des.Mode = CipherMode.ECB;
  125. des.Key = Encoding.UTF8.GetBytes(DESKEY);
  126. des.IV = Encoding.UTF8.GetBytes(DESKEY);
  127. byte[] bytes = Encoding.UTF8.GetBytes(data);
  128. byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  129. return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
  130. //return ByteToHex(resultBytes);//十六位
  131. }
  132. catch
  133. {
  134. return "";
  135. }
  136. }
  137. /// <summary>
  138. /// DES加密
  139. /// </summary>
  140. /// <param name="data">要加密的字符串</param>
  141. /// <param name="key">密钥串(8位字符串)</param>
  142. /// <returns>加密后的字符串</returns>
  143. public static string EncryptDES(string data, string key)
  144. {
  145. try
  146. {
  147. DES des = new DESCryptoServiceProvider();
  148. des.Mode = CipherMode.ECB;
  149. des.Key = Encoding.UTF8.GetBytes(key);
  150. des.IV = Encoding.UTF8.GetBytes(key);
  151. byte[] bytes = Encoding.UTF8.GetBytes(data);
  152. byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  153. return Convert.ToBase64String(resultBytes); //密文以base64返回;(可根据实际需要返回16进制数据;)
  154. // return ByteToHex(resultBytes);//十六位
  155. }
  156. catch
  157. {
  158. return "";
  159. }
  160. }
  161. /// <summary>
  162. /// DES解密
  163. /// </summary>
  164. /// <param name="data">要解密的字符串</param>
  165. /// <returns>解密后的字符串</returns>
  166. public static string DecryptDES(string data)
  167. {
  168. try
  169. {
  170. //data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  171. DES des = new DESCryptoServiceProvider();
  172. des.Mode = CipherMode.ECB;
  173. des.Key = Encoding.UTF8.GetBytes(DESKEY);
  174. des.IV = Encoding.UTF8.GetBytes(DESKEY);
  175. byte[] bytes = Convert.FromBase64String(data); //解密base64;
  176. // byte[] bytes = HexToByte(data); //16进制to byte[];
  177. byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  178. return Encoding.UTF8.GetString(resultBytes);
  179. }
  180. catch
  181. {
  182. return "";
  183. }
  184. }
  185. /// <summary>
  186. /// DES解密
  187. /// </summary>
  188. /// <param name="data">要解密的字符串</param>
  189. /// <param name="key">密钥串(8位字符串)</param>
  190. /// <returns>解密后的字符串</returns>
  191. public static string DecryptDES(string data, string key)
  192. {
  193. try
  194. {
  195. //data = data.Replace(" ", "+"); //URL传参时应用,加密后字符串不含空格但含有+号,在通过URL传参时,+会被替换成空格
  196. DES des = new DESCryptoServiceProvider();
  197. des.Mode = CipherMode.ECB;
  198. des.Key = Encoding.UTF8.GetBytes(key);
  199. des.IV = Encoding.UTF8.GetBytes(key);
  200. byte[] bytes = Convert.FromBase64String(data); //解密base64;
  201. // byte[] bytes = HexToByte(data); //16进制to byte[];
  202. byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  203. return Encoding.UTF8.GetString(resultBytes);
  204. }
  205. catch
  206. {
  207. return "";
  208. }
  209. }
  210. // method to convert hex string into a byte array
  211. private static byte[] HexToByte(string data)
  212. {
  213. data = data.Replace(" ", "");
  214. var comBuffer = new byte[data.Length / 2];
  215. for (int i = 0; i < data.Length; i += 2)
  216. comBuffer[i / 2] = Convert.ToByte(data.Substring(i, 2), 16);
  217. return comBuffer;
  218. }
  219. // method to convert a byte array into a hex string
  220. private static string ByteToHex(byte[] comByte)
  221. {
  222. var builder = new StringBuilder(comByte.Length * 3);
  223. foreach (byte data in comByte)
  224. builder.Append(Convert.ToString(data, 16).PadLeft(2, '0').PadRight(3, ' '));
  225. return builder.ToString().ToUpper().Replace(" ", "");
  226. }
  227. /// <summary>
  228. /// md5
  229. /// </summary>
  230. /// <param name="normalTxt"></param>
  231. /// <returns></returns>
  232. public static string MD5Encrypt(string normalTxt)
  233. {
  234. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(normalTxt, "MD5").ToLower();
  235. }
  236. /// <summary>
  237. /// sha1
  238. /// </summary>
  239. /// <param name="normalTxt"></param>
  240. /// <returns></returns>
  241. public static string SHA1Encrypt(string normalTxt)
  242. {
  243. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(normalTxt, "SHA1").ToLower();
  244. }
  245. }
  246. }