EncryptAES.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using System.Security.Cryptography;
  5. using Ant.Service.Common;
  6. namespace Ant.Service.Utilities
  7. {
  8. /// <summary>
  9. /// 高级加密标准
  10. /// </summary>
  11. public class AES
  12. {
  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
  18. /// </summary>
  19. private static string encryptKey = "36CBB25BB63A43E9B7399EAE796F41B9";
  20. /// <summary>
  21. /// 解密的key 与加密key相同
  22. /// </summary>
  23. private static string decryptKey = "36CBB25BB63A43E9B7399EAE796F41B9";
  24. /// <summary>
  25. /// DES加密字符串
  26. /// </summary>
  27. /// <param name="encryptString">待加密的字符串</param>
  28. /// <param name="encryptKey">加密密钥,要求为8位</param>
  29. /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
  30. // public static string Encode(string encryptString, string encryptKey)
  31. // {
  32. // encryptKey = Utils.GetSubString(encryptKey, 8, "");
  33. // encryptKey = encryptKey.PadRight(8, ' ');
  34. // byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
  35. // byte[] rgbIV = Keys;
  36. // byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
  37. // DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
  38. // MemoryStream mStream = new MemoryStream();
  39. // CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  40. // cStream.Write(inputByteArray, 0, inputByteArray.Length);
  41. // cStream.FlushFinalBlock();
  42. // return Convert.ToBase64String(mStream.ToArray());
  43. //
  44. // }
  45. /// <summary>
  46. /// 使用AES方式进行加密
  47. /// </summary>
  48. /// <param name="encryptString">需要加密的字符串</param>
  49. /// <param name="encryptKey">进行加密的Key</param>
  50. /// <returns></returns>
  51. public static string Encode(string encryptString)
  52. {
  53. encryptKey = Utils.GetSubString(encryptKey, 32, "");
  54. encryptKey = encryptKey.PadRight(32, ' ');
  55. RijndaelManaged rijndaelProvider = new RijndaelManaged();
  56. rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32));
  57. rijndaelProvider.IV = Keys;
  58. ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor();
  59. byte[] inputData = Encoding.UTF8.GetBytes(encryptString);
  60. byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length);
  61. return Convert.ToBase64String(encryptedData);
  62. }
  63. /// <summary>
  64. /// DES解密字符串
  65. /// </summary>
  66. /// <param name="decryptString">待解密的字符串</param>
  67. /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
  68. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  69. // public static string Decode(string decryptString, string decryptKey)
  70. // {
  71. // try
  72. // {
  73. // decryptKey = Utils.GetSubString(decryptKey, 8, "");
  74. // decryptKey = decryptKey.PadRight(8, ' ');
  75. // byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
  76. // byte[] rgbIV = Keys;
  77. // byte[] inputByteArray = Convert.FromBase64String(decryptString);
  78. // DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
  79. //
  80. // MemoryStream mStream = new MemoryStream();
  81. // CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  82. // cStream.Write(inputByteArray, 0, inputByteArray.Length);
  83. // cStream.FlushFinalBlock();
  84. // return Encoding.UTF8.GetString(mStream.ToArray());
  85. // }
  86. // catch
  87. // {
  88. // return "";
  89. // }
  90. //
  91. // }
  92. /// <summary>
  93. /// AES解密
  94. /// </summary>
  95. /// <param name="decryptString">需要解密的字符串</param>
  96. /// <param name="decryptKey">需要解密的Key</param>
  97. /// <returns></returns>
  98. public static string Decode(string decryptString)
  99. {
  100. try
  101. {
  102. decryptKey = Utils.GetSubString(decryptKey, 32, "");
  103. decryptKey = decryptKey.PadRight(32, ' ');
  104. RijndaelManaged rijndaelProvider = new RijndaelManaged();
  105. rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey);
  106. rijndaelProvider.IV = Keys;
  107. ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor();
  108. byte[] inputData = Convert.FromBase64String(decryptString);
  109. byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);
  110. return Encoding.UTF8.GetString(decryptedData);
  111. }
  112. catch
  113. {
  114. return "";
  115. }
  116. }
  117. }
  118. /// <summary>
  119. /// DES加密
  120. /// </summary>
  121. public class DES
  122. {
  123. //默认密钥向量
  124. private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
  125. /// <summary>
  126. /// 加密的key
  127. /// </summary>
  128. private static string encryptKey = "!@#$%^&*";
  129. /// <summary>
  130. /// 解密的key
  131. /// </summary>
  132. private static string decryptKey = "!@#$%^&*";
  133. /// <summary>
  134. /// DES加密字符串
  135. /// </summary>
  136. /// <param name="encryptString">待加密的字符串</param>
  137. /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
  138. public static string Encode(string encryptString)
  139. {
  140. encryptKey = Utils.GetSubString(encryptKey, 8, "");
  141. encryptKey = encryptKey.PadRight(8, ' ');
  142. byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
  143. byte[] rgbIV = Keys;
  144. byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
  145. DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
  146. MemoryStream mStream = new MemoryStream();
  147. CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  148. cStream.Write(inputByteArray, 0, inputByteArray.Length);
  149. cStream.FlushFinalBlock();
  150. return Convert.ToBase64String(mStream.ToArray());
  151. }
  152. /// <summary>
  153. /// DES解密字符串
  154. /// </summary>
  155. /// <param name="decryptString">待解密的字符串</param>
  156. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  157. public static string Decode(string decryptString)
  158. {
  159. try
  160. {
  161. decryptKey = Utils.GetSubString(decryptKey, 8, "");
  162. decryptKey = decryptKey.PadRight(8, ' ');
  163. byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
  164. byte[] rgbIV = Keys;
  165. byte[] inputByteArray = Convert.FromBase64String(decryptString);
  166. DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
  167. MemoryStream mStream = new MemoryStream();
  168. CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  169. cStream.Write(inputByteArray, 0, inputByteArray.Length);
  170. cStream.FlushFinalBlock();
  171. return Encoding.UTF8.GetString(mStream.ToArray());
  172. }
  173. catch
  174. {
  175. return "";
  176. }
  177. }
  178. }
  179. }