详述Asp.net的加密解密技巧(2)

下面本就简单介绍在项目中常用的加密及解密的方法

一、MD5加密算法

[.NET类库中自带的算法 MD5是个不可逆的算法 没有解密的算法]

其实在ASP.Net编程中加密数据。在DotNet中有自带的类:

  1. System.Web.Security.HashPasswordForStoringInConfigFile()  
  2. public string md5(string str,int code)  
  3. {  
  4. if(code==16) //16位MD5加密(取32位加密的9~25字符)  
  5. {  
  6. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5")
  7. .ToLower().Substring(8,16) ;  
  8. }  
  9. if(code==32) //32位加密  
  10. {  
  11. return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5")
  12. .ToLower();  
  13. }  
  14. return "00000000000000000000000000000000";   

简单的使用:

  1. //--导入所需要的包  
  2. using System.IO;  
  3. using System.Text;  
  4. using System.Security.Cryptography; 

(1)MD5普通加密

  1. //获取要加密的字段,并转化为Byte[]数组  
  2. byte[] data = System.Text.Encoding.Unicode  
  3. .GetBytes(TextBox1.Text.ToCharArray());  
  4. //建立加密服务  
  5. System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();  
  6. //加密Byte[]数组  
  7. byte[] result = md5.ComputeHash(data);  
  8. Label1.Text = "MD5普通加密:" + System.Text.Encoding.Unicode.GetString(result); 

(2)MD5密码加密[常用]

  1. Label1.Text = "MD5密码加密:" + System.Web.Security.FormsAuthentication
  2. .HashPasswordForStoringInConfigFile(TextBox1.Text, "MD5"); 

(3)ASP.NET中加密与解密QueryString的方法[常用]

  1. //加密   
  2. Response.Redirect("DetailInfo.aspx?id=" + Convert.ToBase64String  
  3. (System.Text.Encoding.Default.GetBytes("whaben")).Replace("+","%2B"));  
  4. //解密  
  5. string ID = System.Text.Encoding.Default.GetString  
  6. (Convert.FromBase64String(Request.QueryString["id"].ToString().Replace("%2B","+"))); 

二、DES加密及解密的算法[常用密钥算法]

简单的使用:

  1. //--导入所需要的包  
  2. using System.IO;  
  3. using System.Text;  
  4. using System.Security.Cryptography;  
  5. public static string Key = "DKMAB5DE";//加密密钥必须为8位  
  6. //加密算法  
  7. public static string MD5Encrypt(string pToEncrypt)  
  8. {  
  9. DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
  10. byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);  
  11. des.Key = ASCIIEncoding.ASCII.GetBytes(Key);  
  12. des.IV = ASCIIEncoding.ASCII.GetBytes(Key);  
  13. MemoryStream ms = new MemoryStream();  
  14. CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);  
  15. cs.Write(inputByteArray, 0, inputByteArray.Length);  
  16. cs.FlushFinalBlock();  
  17. StringBuilder ret = new StringBuilder();  
  18. foreach (byte b in ms.ToArray())  
  19. {  
  20. ret.AppendFormat("{0:X2}", b);  
  21. }  
  22. ret.ToString();  
  23. return ret.ToString();  
  24. }  
  25. //解密算法  
  26. public static string MD5Decrypt(string pToDecrypt)  
  27. {  
  28. DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
  29. byte[] inputByteArray = new byte[pToDecrypt.Length / 2];  
  30. for (int x = 0; x < pToDecrypt.Length / 2; x++)  
  31. {  
  32. int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));  
  33. inputByteArray[x] = (byte)i;  
  34. }  
  35. des.Key = ASCIIEncoding.ASCII.GetBytes(Key);  
  36. des.IV = ASCIIEncoding.ASCII.GetBytes(Key);  
  37. MemoryStream ms = new MemoryStream();  
  38. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);  
  39. cs.Write(inputByteArray, 0, inputByteArray.Length);  
  40. cs.FlushFinalBlock();  
  41. StringBuilder ret = new StringBuilder();  
  42. return System.Text.Encoding.ASCII.GetString(ms.ToArray());  

三、RSA加密及解密的算法[常用密钥算法]

简单的使用:

  1. //--导入所需要的包  
  2. using System.Text;  
  3. using System.Security.Cryptography;  
  4. //加密算法  
  5. public string RSAEncrypt(string encryptString)  
  6. {  
  7. CspParameters csp = new CspParameters();  
  8. csp.KeyContainerName = "whaben";  
  9. RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(csp);  
  10. byte[] encryptBytes = RSAProvider.Encrypt(ASCIIEncoding.ASCII.GetBytes(encryptString), true);  
  11. string str = "";  
  12. foreach (byte b in encryptBytes)  
  13. {  
  14. str = str + string.Format("{0:x2}", b);  
  15. }  
  16. return str;  
  17. }  
  18. //解密算法  
  19. public string RSADecrypt(string decryptString)  
  20. {  
  21. CspParameters csp = new CspParameters();  
  22. csp.KeyContainerName = "whaben";  
  23. RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(csp);  
  24. int length = (decryptString.Length / 2);  
  25. byte[] decryptBytes = new byte[length];  
  26. for (int index = 0; index < length; index++)  
  27. {  
  28. string substring = decryptString.Substring(index * 2, 2);  
  29. decryptBytes[index] = Convert.ToByte(substring, 16);  
  30. }  
  31. decryptBytes = RSAProvider.Decrypt(decryptBytes, true);  
  32. return ASCIIEncoding.ASCII.GetString(decryptBytes);  
原文地址:https://www.cnblogs.com/sunshch/p/2462292.html