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);
    }

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/juan/p/1487484.html
Copyright © 2011-2022 走看看