Encrypt.cs 7.9 KB

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