/Src/CRM.Common/EncodeHelper.cs

http://20121126.codeplex.com · C# · 215 lines · 109 code · 27 blank · 79 comment · 4 complexity · 4cbbdf432b366ccf63b1a312c31d5d38 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Security.Cryptography;
  6. using System.Configuration;
  7. namespace CRM.Common
  8. {
  9. /// <summary>
  10. /// Base64???
  11. /// </summary>
  12. public class Base64
  13. {
  14. /// <summary>
  15. /// ??????base64????
  16. /// </summary>
  17. /// <param name="SourceString">???????</param>
  18. /// <param name="Ens">System.Text.Encoding ??????????????
  19. /// System.Text.Encoding.GetEncoding("gb2312")</param>
  20. /// <returns>?????????</returns>
  21. public static string EncodingString(string SourceString, System.Text.Encoding Ens)
  22. {
  23. return Convert.ToBase64String(Ens.GetBytes(SourceString));
  24. }
  25. /// <summary>
  26. /// ??????????????base64????
  27. /// </summary>
  28. /// <param name="SourceString">???????</param>
  29. /// <returns>?????????</returns>
  30. public static string EncodingString(string SourceString)
  31. {
  32. return EncodingString(SourceString, System.Text.Encoding.Default);
  33. }
  34. /// <summary>
  35. /// ?base64?????????????????
  36. /// </summary>
  37. /// <param name="Base64String">Base64???????</param>
  38. /// <param name="Ens">System.Text.Encoding??????????????
  39. /// System.Text.Encoding.Default</param>
  40. /// <returns>?????????</returns>
  41. public static string DecodingString(string Base64String, System.Text.Encoding Ens)
  42. {
  43. return Ens.GetString((Convert.FromBase64String(Base64String)));
  44. }
  45. /// <summary>
  46. ///?????????Base64?????????????????
  47. /// </summary>
  48. /// <param name="Base64String">Base64???????</param>
  49. /// <returns>?????????</returns>
  50. public static string DecodingString(string Base64String)
  51. {
  52. return DecodingString(Base64String, System.Text.Encoding.Default);
  53. }
  54. }
  55. /// <summary>
  56. /// DES???
  57. /// </summary>
  58. public class DES
  59. {
  60. public static string GenerateKey()
  61. {
  62. // ????DES ??????????Key
  63. DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
  64. // ???????Key ????
  65. return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
  66. }
  67. /// <summary>
  68. /// DES ?? Key
  69. /// </summary>
  70. public static string DESKey
  71. {
  72. get
  73. {
  74. if (ConfigurationManager.AppSettings["desEncryKey"] != null)
  75. return ConfigurationManager.AppSettings["desEncryKey"];
  76. return "agijkmpk";
  77. }
  78. }
  79. /// <summary>
  80. /// ?????
  81. /// </summary>
  82. /// <param name="sInputString">????</param>
  83. /// <param name="sKey">Key</param>
  84. /// <returns>????</returns>
  85. public static string EncryptString(string sInputString, string sKey)
  86. {
  87. byte[] data = Encoding.Default.GetBytes(sInputString);
  88. byte[] result;
  89. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
  90. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  91. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  92. ICryptoTransform desencrypt = DES.CreateEncryptor();
  93. result = desencrypt.TransformFinalBlock(data, 0, data.Length);
  94. string desString = "";
  95. for (int i = 0; i < result.Length; i++)
  96. {
  97. desString += result[i].ToString() + "-";
  98. }
  99. //return desString.TrimEnd('-');
  100. return BitConverter.ToString(result);
  101. }
  102. /// <summary>
  103. /// ?????
  104. /// </summary>
  105. /// <param name="sInputString">????</param>
  106. /// <param name="sKey">Key</param>
  107. /// <returns>????</returns>
  108. public static string DecryptString(string sInputString, string sKey)
  109. {
  110. string[] sInput = sInputString.Split("-".ToCharArray());
  111. byte[] data = new byte[sInput.Length];
  112. byte[] result;
  113. for (int i = 0; i < sInput.Length; i++)
  114. data[i] = byte.Parse(sInput[i], System.Globalization.NumberStyles.HexNumber);
  115. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
  116. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  117. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  118. ICryptoTransform desencrypt = DES.CreateDecryptor();
  119. result = desencrypt.TransformFinalBlock(data, 0, data.Length);
  120. return Encoding.Default.GetString(result);
  121. }
  122. }
  123. /// <summary>
  124. ///?????????base64+??DES???????????
  125. /// </summary>
  126. public class DoubleEncodeHelper
  127. {
  128. #region ?????????base64+??DES???????????
  129. /// <summary>
  130. /// ????
  131. /// </summary>
  132. /// <param name="inputString"></param>
  133. /// <param name="sKey"></param>
  134. /// <returns></returns>
  135. public static string Encode(string inputString, string sKey)
  136. {
  137. //????DES??
  138. string content = DES.EncryptString(inputString, sKey);
  139. //????base64??
  140. content = Base64.EncodingString(content);
  141. //?????DES??
  142. content = DES.EncryptString(content, sKey);
  143. //?????base64??
  144. content = Base64.EncodingString(content);
  145. return content;
  146. }
  147. #endregion
  148. #region ???????Base64??+??DES??????????
  149. /// <summary>
  150. /// ???????Base64??+??DES??????????
  151. /// </summary>
  152. /// <param name="inputString"></param>
  153. /// <param name="sKey"></param>
  154. /// <returns></returns>
  155. public static string Uncode(string inputString, string sKey)
  156. {
  157. //????base64??
  158. inputString = Base64.DecodingString(inputString);
  159. //???DES??
  160. inputString = DES.DecryptString(inputString, sKey);
  161. //????base64??
  162. inputString = Base64.DecodingString(inputString);
  163. //???DES??
  164. inputString = DES.DecryptString(inputString, sKey);
  165. return inputString;
  166. }
  167. #endregion
  168. }
  169. #region MD5???
  170. /// <summary>
  171. /// MD5???
  172. /// </summary>
  173. public class MD5
  174. {
  175. /// <summary>
  176. /// Md5??
  177. /// </summary>
  178. /// <param name="sInputString">????</param>
  179. /// <returns></returns>
  180. public string HashString(string sInputString)
  181. {
  182. System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
  183. string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(sInputString))).Replace("-", "");
  184. return encoded;
  185. }
  186. }
  187. #endregion
  188. }