首页 > 编程 > .NET > 正文

ASP.NET加密解密算法分享

2024-07-10 13:28:55
字体:
来源:转载
供稿:网友

这篇文章主要分享的是ASP.NET实现的加密解密算法,非常的简单使用,有需要的小伙伴快来参考下吧。

 

 
  1. #region DES加密解密 
  2. /// <summary> 
  3. /// DES加密 
  4. /// </summary> 
  5. /// <param name="strSource">待加密字串</param> 
  6. /// <param name="key">32位Key值</param> 
  7. /// <returns>加密后的字符串</returns> 
  8. public string DESEncrypt(string strSource) 
  9. return DESEncrypt(strSource, DESKey); 
  10. public string DESEncrypt(string strSource, byte[] key) 
  11. SymmetricAlgorithm sa = Rijndael.Create(); 
  12. sa.Key = key; 
  13. sa.Mode = CipherMode.ECB; 
  14. sa.Padding = PaddingMode.Zeros; 
  15. MemoryStream ms = new MemoryStream(); 
  16. CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); 
  17. byte[] byt = Encoding.Unicode.GetBytes(strSource); 
  18. cs.Write(byt, 0, byt.Length); 
  19. cs.FlushFinalBlock(); 
  20. cs.Close(); 
  21. return Convert.ToBase64String(ms.ToArray()); 
  22. /// <summary> 
  23. /// DES解密 
  24. /// </summary> 
  25. /// <param name="strSource">待解密的字串</param> 
  26. /// <param name="key">32位Key值</param> 
  27. /// <returns>解密后的字符串</returns> 
  28. public string DESDecrypt(string strSource) 
  29. return DESDecrypt(strSource, DESKey); 
  30. public string DESDecrypt(string strSource, byte[] key) 
  31. SymmetricAlgorithm sa = Rijndael.Create(); 
  32. sa.Key = key; 
  33. sa.Mode = CipherMode.ECB; 
  34. sa.Padding = PaddingMode.Zeros; 
  35. ICryptoTransform ct = sa.CreateDecryptor(); 
  36. byte[] byt = Convert.FromBase64String(strSource); 
  37. MemoryStream ms = new MemoryStream(byt); 
  38. CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read); 
  39. StreamReader sr = new StreamReader(cs, Encoding.Unicode); 
  40. return sr.ReadToEnd(); 
  41. #endregion 
  42. #region 一个用hash实现的加密解密方法 
  43. /// <summary> 
  44. /// 加密 
  45. /// </summary> 
  46. /// <param name="src"></param> 
  47. /// <returns></returns> 
  48. public static string EncryptStrByHash(string src) 
  49. if (src.Length == 0) 
  50. return ""
  51. byte[] HaKey = System.Text.Encoding.ASCII.GetBytes((src + "Test").ToCharArray()); 
  52. byte[] HaData = new byte[20]; 
  53. HMACSHA1 Hmac = new HMACSHA1(HaKey); 
  54. CryptoStream cs = new CryptoStream(Stream.Null, Hmac, CryptoStreamMode.Write); 
  55. try 
  56. cs.Write(HaData, 0, HaData.Length); 
  57. finally 
  58. cs.Close(); 
  59. string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16); 
  60. byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray()); 
  61. byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray()); 
  62. byte[] EncodedBytes = { }; 
  63. MemoryStream ms = new MemoryStream(); 
  64. RijndaelManaged rv = new RijndaelManaged(); 
  65. cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write); 
  66. try 
  67. cs.Write(RiDataBuf, 0, RiDataBuf.Length); 
  68. cs.FlushFinalBlock(); 
  69. EncodedBytes = ms.ToArray(); 
  70. finally 
  71. ms.Close(); 
  72. cs.Close(); 
  73. return HaResult + System.Convert.ToBase64String(EncodedBytes); 
  74. /// <summary> 
  75. /// 解密 
  76. /// </summary> 
  77. /// <param name="src"></param> 
  78. /// <returns></returns> 
  79. public static string DecrypStrByHash(string src) 
  80. if (src.Length < 40) return ""
  81. byte[] SrcBytes = System.Convert.FromBase64String(src.Substring(16)); 
  82. byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(src.Substring(0, 16).ToCharArray()); 
  83. byte[] InitialText = new byte[SrcBytes.Length]; 
  84. RijndaelManaged rv = new RijndaelManaged(); 
  85. MemoryStream ms = new MemoryStream(SrcBytes); 
  86. CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read); 
  87. try 
  88. cs.Read(InitialText, 0, InitialText.Length); 
  89. finally 
  90. ms.Close(); 
  91. cs.Close(); 
  92. System.Text.StringBuilder Result = new System.Text.StringBuilder(); 
  93. for (int i = 0; i < InitialText.Length; ++i) if (InitialText[i] > 0) Result.Append((char)InitialText[i]); 
  94. return Result.ToString(); 
  95. /// <summary> 
  96. /// 对加密后的密文重新编码,如果密文长>16,则去掉前16个字符,如果长度小于16,返回空字符串 
  97. /// </summary> 
  98. /// <param name="s"></param> 
  99. /// <returns></returns> 
  100. public string ReEncryptStrByHash(string s) 
  101. string e = Encrypt.EncryptStrByHash(s); 
  102. return ((e.Length > 16) ? e.Substring(16) : ""); 
  103. #endregion 
  104. #region Md5加密,生成16位或32位,生成的密文都是大写 
  105. public static string Md5To16(string str) 
  106. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); 
  107. string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8); 
  108. t2 = t2.Replace("-"""); 
  109. return t2; 
  110. //// <summary> 
  111. /// MD5 32位加密 
  112. /// </summary> 
  113. /// <param name="str"></param> 
  114. /// <returns></returns> 
  115. public static string Md5To32(string str) 
  116. string pwd = ""
  117. MD5 md5 = MD5.Create(); 
  118. byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); 
  119. for (int i = 0; i < s.Length; i++) 
  120. pwd = pwd + s[i].ToString("X"); 
  121. return pwd; 
  122. #endregion 
  123. #region 3DES加密解密 
  124. public string Encrypt3DES(string str) 
  125. //密钥 
  126. string sKey = "wyw308"
  127. // //矢量,可为空 
  128. string sIV = "scf521"
  129. // //构造对称算法 
  130. SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); 
  131. ICryptoTransform ct; 
  132. MemoryStream ms; 
  133. CryptoStream cs; 
  134. byte[] byt; 
  135. mCSP.Key = Convert.FromBase64String(sKey); 
  136. mCSP.IV = Convert.FromBase64String(sIV); 
  137. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; 
  138. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 
  139. ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); 
  140. byt = Encoding.UTF8.GetBytes(str); 
  141. ms = new MemoryStream(); 
  142. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); 
  143. cs.Write(byt, 0, byt.Length); 
  144. cs.FlushFinalBlock(); 
  145. cs.Close(); 
  146. return Convert.ToBase64String(ms.ToArray()); 
  147. /// <summary> 
  148. /// 带指定密钥和矢量的3DES加密 
  149. /// </summary> 
  150. /// <param name="str"></param> 
  151. /// <param name="sKey"></param> 
  152. /// <param name="sIV"></param> 
  153. /// <returns></returns> 
  154. public string Encrypt3DES(string str, string sKey, string sIV) 
  155. SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); 
  156. ICryptoTransform ct; 
  157. MemoryStream ms; 
  158. CryptoStream cs; 
  159. byte[] byt; 
  160. mCSP.Key = Convert.FromBase64String(sKey); 
  161. mCSP.IV = Convert.FromBase64String(sIV); 
  162. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; 
  163. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 
  164. ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); 
  165. byt = Encoding.UTF8.GetBytes(str); 
  166. ms = new MemoryStream(); 
  167. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); 
  168. cs.Write(byt, 0, byt.Length); 
  169. cs.FlushFinalBlock(); 
  170. cs.Close(); 
  171. return Convert.ToBase64String(ms.ToArray()); 
  172. //解密 
  173. public string Decrypt3DES(string Value) 
  174. string sKey = "wyw308"
  175. string sIV = "scf521"
  176. SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); 
  177. ICryptoTransform ct; 
  178. MemoryStream ms; 
  179. CryptoStream cs; 
  180. byte[] byt; 
  181. mCSP.Key = Convert.FromBase64String(sKey); 
  182. mCSP.IV = Convert.FromBase64String(sIV); 
  183. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; 
  184. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 
  185. ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); 
  186. byt = Convert.FromBase64String(Value); 
  187. ms = new MemoryStream(); 
  188. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); 
  189. cs.Write(byt, 0, byt.Length); 
  190. cs.FlushFinalBlock(); 
  191. cs.Close(); 
  192. return Encoding.UTF8.GetString(ms.ToArray()); 
  193. /// <summary> 
  194. /// 带指定密钥和矢量的3DES解密 
  195. /// </summary> 
  196. /// <param name="Value"></param> 
  197. /// <param name="sKey"></param> 
  198. /// <param name="sIV"></param> 
  199. /// <returns></returns> 
  200. public string Decrypt3DES(string str, string sKey, string sIV) 
  201. SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); 
  202. ICryptoTransform ct; 
  203. MemoryStream ms; 
  204. CryptoStream cs; 
  205. byte[] byt; 
  206. mCSP.Key = Convert.FromBase64String(sKey); 
  207. mCSP.IV = Convert.FromBase64String(sIV); 
  208. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; 
  209. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 
  210. ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); 
  211. byt = Convert.FromBase64String(str); 
  212. ms = new MemoryStream(); 
  213. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); 
  214. cs.Write(byt, 0, byt.Length); 
  215. cs.FlushFinalBlock(); 
  216. cs.Close(); 
  217. return Encoding.UTF8.GetString(ms.ToArray()); 
  218. #endregion 
  219. #region 一个简单的加密解密方法,只支持英文 
  220. public static string EnCryptEnStr(string str) //倒序加1加密 
  221. byte[] by = new byte[str.Length]; 
  222. for (int i = 0; 
  223. i <= str.Length - 1; 
  224. i++) 
  225. by[i] = (byte)((byte)str[i] + 1); 
  226. str = ""
  227. for (int i = by.Length - 1; 
  228. i >= 0; 
  229. i--) 
  230. str += ((char)by[i]).ToString(); 
  231. return str; 
  232. public static string DeCryptEnStr(string str) //顺序减1解码 
  233. byte[] by = new byte[str.Length]; 
  234. for (int i = 0; 
  235. i <= str.Length - 1; 
  236. i++) 
  237. by[i] = (byte)((byte)str[i] - 1); 
  238. str = ""
  239. for (int i = by.Length - 1; 
  240. i >= 0; 
  241. i--) 
  242. str += ((char)by[i]).ToString(); 
  243. return str; 
  244. #endregion 
  245. #region 一个简单的加密解密方法,在上一个的基础上支持中文 
  246. public static string EnCryptCnStr(string str) 
  247. string htext = ""// blank text 
  248. for (int i = 0; i < str.Length; i++) 
  249. htext = htext + (char)(str[i] + 10 - 1 * 2); 
  250. return htext; 
  251. public static string DeCryptCnStr(string str) 
  252. string dtext = ""
  253. for (int i = 0; i < str.Length; i++) 
  254. dtext = dtext + (char)(str[i] - 10 + 1 * 2); 
  255. return dtext; 
  256. #endregion 
  257. #region Url地址编码解码 
  258. /// <summary> 
  259. /// 编码Url地址 
  260. /// </summary> 
  261. /// <param name="url"></param> 
  262. /// <returns></returns> 
  263. public static string UrlEncode(string url) 
  264. byte[] mByte = null
  265. mByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(url); 
  266. return System.Web.HttpUtility.UrlEncode(mByte); 
  267. /// <summary> 
  268. /// 解码Url地址 
  269. /// </summary> 
  270. /// <param name="url"></param> 
  271. /// <returns></returns> 
  272. public static string UrlDecode(string url) 
  273. return HttpUtility.UrlDecode(url, System.Text.Encoding.GetEncoding("GB2312")); 
  274. #endregion 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表