DEncrypt.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;
  4. namespace LJLib.Tools.DEncrypt
  5. {
  6. /// <summary>
  7. /// Encrypt 的摘要说明。
  8. /// Copyright (C) AIFMB
  9. /// </summary>
  10. public class DEncrypt
  11. {
  12. /// <summary>
  13. /// 构造方法
  14. /// </summary>
  15. public DEncrypt()
  16. {
  17. }
  18. #region 使用 缺省密钥字符串 加密/解密string
  19. /// <summary>
  20. /// 使用缺省密钥字符串加密string
  21. /// </summary>
  22. /// <param name="original">明文</param>
  23. /// <returns>密文</returns>
  24. public static string Encrypt(string original)
  25. {
  26. return Encrypt(original,"AIFMB");
  27. }
  28. /// <summary>
  29. /// 使用缺省密钥字符串解密string
  30. /// </summary>
  31. /// <param name="original">密文</param>
  32. /// <returns>明文</returns>
  33. public static string Decrypt(string original)
  34. {
  35. return Decrypt(original,"AIFMB",System.Text.Encoding.Default);
  36. }
  37. #endregion
  38. #region 使用 给定密钥字符串 加密/解密string
  39. /// <summary>
  40. /// 使用给定密钥字符串加密string
  41. /// </summary>
  42. /// <param name="original">原始文字</param>
  43. /// <param name="key">密钥</param>
  44. /// <param name="encoding">字符编码方案</param>
  45. /// <returns>密文</returns>
  46. public static string Encrypt(string original, string key)
  47. {
  48. byte[] buff = System.Text.Encoding.Default.GetBytes(original);
  49. byte[] kb = System.Text.Encoding.Default.GetBytes(key);
  50. return Convert.ToBase64String(Encrypt(buff,kb));
  51. }
  52. /// <summary>
  53. /// 使用给定密钥字符串解密string
  54. /// </summary>
  55. /// <param name="original">密文</param>
  56. /// <param name="key">密钥</param>
  57. /// <returns>明文</returns>
  58. public static string Decrypt(string original, string key)
  59. {
  60. return Decrypt(original,key,System.Text.Encoding.Default);
  61. }
  62. /// <summary>
  63. /// 使用给定密钥字符串解密string,返回指定编码方式明文
  64. /// </summary>
  65. /// <param name="encrypted">密文</param>
  66. /// <param name="key">密钥</param>
  67. /// <param name="encoding">字符编码方案</param>
  68. /// <returns>明文</returns>
  69. public static string Decrypt(string encrypted, string key,Encoding encoding)
  70. {
  71. byte[] buff = Convert.FromBase64String(encrypted);
  72. byte[] kb = System.Text.Encoding.Default.GetBytes(key);
  73. return encoding.GetString(Decrypt(buff,kb));
  74. }
  75. #endregion
  76. #region 使用 缺省密钥字符串 加密/解密/byte[]
  77. /// <summary>
  78. /// 使用缺省密钥字符串解密byte[]
  79. /// </summary>
  80. /// <param name="encrypted">密文</param>
  81. /// <param name="key">密钥</param>
  82. /// <returns>明文</returns>
  83. public static byte[] Decrypt(byte[] encrypted)
  84. {
  85. byte[] key = System.Text.Encoding.Default.GetBytes("AIFMB");
  86. return Decrypt(encrypted,key);
  87. }
  88. /// <summary>
  89. /// 使用缺省密钥字符串加密
  90. /// </summary>
  91. /// <param name="original">原始数据</param>
  92. /// <param name="key">密钥</param>
  93. /// <returns>密文</returns>
  94. public static byte[] Encrypt(byte[] original)
  95. {
  96. byte[] key = System.Text.Encoding.Default.GetBytes("AIFMB");
  97. return Encrypt(original,key);
  98. }
  99. #endregion
  100. #region 使用 给定密钥 加密/解密/byte[]
  101. /// <summary>
  102. /// 生成MD5摘要
  103. /// </summary>
  104. /// <param name="original">数据源</param>
  105. /// <returns>摘要</returns>
  106. public static byte[] MakeMD5(byte[] original)
  107. {
  108. MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
  109. byte[] keyhash = hashmd5.ComputeHash(original);
  110. hashmd5 = null;
  111. return keyhash;
  112. }
  113. /// <summary>
  114. /// 使用给定密钥加密
  115. /// </summary>
  116. /// <param name="original">明文</param>
  117. /// <param name="key">密钥</param>
  118. /// <returns>密文</returns>
  119. public static byte[] Encrypt(byte[] original, byte[] key)
  120. {
  121. TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
  122. des.Key = MakeMD5(key);
  123. des.Mode = CipherMode.ECB;
  124. return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
  125. }
  126. /// <summary>
  127. /// 使用给定密钥解密数据
  128. /// </summary>
  129. /// <param name="encrypted">密文</param>
  130. /// <param name="key">密钥</param>
  131. /// <returns>明文</returns>
  132. public static byte[] Decrypt(byte[] encrypted, byte[] key)
  133. {
  134. TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
  135. des.Key = MakeMD5(key);
  136. des.Mode = CipherMode.ECB;
  137. return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
  138. }
  139. #endregion
  140. }
  141. }