• 详述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);  
  • 相关阅读:
    eclipse中Preferences的一些设置
    eclipse中文乱码问题解决方案
    classpath、path、JAVA_HOME的作用
    java中抽象类与接口中方法访问修饰符问题 (
    Tomcat配置
    编译型语言和解释型语言
    强类型语言和弱类型语言
    javascript生成指定范围的随机整数
    java中int和Integer的区别
    红黑树入门
  • 原文地址:https://www.cnblogs.com/sunshch/p/2462292.html
Copyright © 2020-2023  润新知