zoukankan      html  css  js  c++  java
  • ASP.NET2.0中的加密解密算法的封装

    其实在ASP.Net编程中加密数据。在DotNet中有自带的类:System.Web.Security.HashPasswordForStoringInConfigFile()

    public string md5(string str,int code)
    {
    if(code==16) //16位MD5加密(取32位加密的9~25字符)
    {
    return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;
    }

    if(code==32) //32位加密
    {
    return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
    }

    return "00000000000000000000000000000000";
    }

    简单的使用:
    //--导入所需要的包
    using System.IO;
    using System.Text;
    using System.Security.Cryptography;
    (1)MD5普通加密
    //获取要加密的字段,并转化为Byte[]数组
    byte[] data = System.Text.Encoding.Unicode
    .GetBytes(TextBox1.Text.ToCharArray());
    //建立加密服务
    System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
    //加密Byte[]数组
    byte[] result = md5.ComputeHash(data);
    Label1.Text = "MD5普通加密:" + System.Text.Encoding.Unicode.GetString(result);
    (2)MD5密码加密[常用]
    Label1.Text = "MD5密码加密:" + System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text, "MD5");

    (3)ASP.NET中加密与解密QueryString的方法[常用]
    //加密
    Response.Redirect("DetailInfo.aspx?id=" + Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("whaben")).Replace("+","%2B"));

    //解密
    string ID = System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["id"].ToString().Replace("%2B","+")));

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

    简单的使用:
    //--导入所需要的包
    using System.IO;
    using System.Text;
    using System.Security.Cryptography;
    public static string Key = "DKMAB5DE";//加密密钥必须为8位
    //加密算法
    public static string MD5Encrypt(string pToEncrypt)
    {
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
    des.Key = ASCIIEncoding.ASCII.GetBytes(Key);
    des.IV = ASCIIEncoding.ASCII.GetBytes(Key);
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    StringBuilder ret = new StringBuilder();
    foreach (byte b in ms.ToArray())
    {
    ret.AppendFormat("{0:X2}", b);
    }
    ret.ToString();
    return ret.ToString();

    }


    //解密算法
    public static string MD5Decrypt(string pToDecrypt)
    {
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
    for (int x = 0; x < pToDecrypt.Length / 2; x++)
    {
    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
    inputByteArray[x] = (byte)i;
    }
    des.Key = ASCIIEncoding.ASCII.GetBytes(Key);
    des.IV = ASCIIEncoding.ASCII.GetBytes(Key);
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    StringBuilder ret = new StringBuilder();
    return System.Text.Encoding.ASCII.GetString(ms.ToArray());

    }

    三、RSA加密及解密的算法[常用密钥算法]
    简单的使用:
    //--导入所需要的包
    using System.Text;
    using System.Security.Cryptography;
    //加密算法
    public string RSAEncrypt(string encryptString)
    {
    CspParameters csp = new CspParameters();
    csp.KeyContainerName = "whaben";
    RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(csp);
    byte[] encryptBytes = RSAProvider.Encrypt(ASCIIEncoding.ASCII.GetBytes(encryptString), true);
    string str = "";
    foreach (byte b in encryptBytes)
    {
    str = str + string.Format("{0:x2}", b);
    }
    return str;
    }
    //解密算法
    public string RSADecrypt(string decryptString)
    {
    CspParameters csp = new CspParameters();
    csp.KeyContainerName = "whaben";
    RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(csp);
    int length = (decryptString.Length / 2);
    byte[] decryptBytes = new byte[length];
    for (int index = 0; index < length; index++)
    {
    string substring = decryptString.Substring(index * 2, 2);
    decryptBytes[index] = Convert.ToByte(substring, 16);
    }
    decryptBytes = RSAProvider.Decrypt(decryptBytes, true);
    return ASCIIEncoding.ASCII.GetString(decryptBytes);
    }

  • 相关阅读:
    Android用户界面开发(4):EditText
    Android用户界面开发(12):Dialog
    Android用户界面开发(5):单项选择
    Android用户界面开发(6):多项选择
    Android用户界面开发(2):ListView
    Android特色开发(2):语音识别
    Android用户界面开发(9):日期和时间
    Android用户界面开发(3):Toast
    Android用户界面开发(15):Gallery
    Android特色开发(1):传感器
  • 原文地址:https://www.cnblogs.com/juan/p/1487484.html
Copyright © 2011-2022 走看看