ASP.NET常用技术之加密解密

在开发项目中有许多数据需要我们进行加密解密操作,这里介绍几个加密解密的方法。

一:MD5加密

      MD5加密是一种单向的加密算法,它只能加密,加密后不能进行逆向解密操作,常用于数字签名和加密用户密码。

      下面利用C#实现MD5加密

       (1)返回base64形式的加密数据

private string MD5_Encrypt(string msg)
    {
        MD5 md5 = MD5.Create();
        byte[] data = Encoding.Default.GetBytes(msg); //待加密的字符串转成字节类型
        byte[] en_data = md5.ComputeHash(data, 0, data.Length);//加密
        return Convert.ToBase64String(en_data); //返回加密后数据的base64形式字符串
    }
View Code

        (2)返回16进制形式的数据

private string MD5_Encrypt(string msg)
    {
        MD5 md5 = MD5.Create();
        byte[] data = Encoding.Default.GetBytes(msg); //待加密的字符串转成字节类型
        byte[] en_data = md5.ComputeHash(data, 0, data.Length);//加密
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < en_data.Length; i++)
        {
            sb.Append(en_data[i].ToString("X2")); 
        }
        return sb.ToString();
    }
View Code

二:DES加密解密

      DES加密算法是一种对称的加密算法,对称加密指:加密和解密用同一组的钥匙。相对的 非对称加密算法加密密匙用一组,解密密匙用另一组。

      下面利用C#实现DES加密解密

      DES加密

private string DES_Encrypt(string msg,string key)
    {
        byte[] data = Encoding.Default.GetBytes(msg);//待加密的字符串转成字节类型
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        byte[] rgbKey=ASCIIEncoding.ASCII.GetBytes(key.PadRight(8,a));//密匙
        byte[] rgbIV = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8,a));//向量
        des.Key = rgbKey;//设置密匙
        des.IV = rgbIV; //设置初始化向量
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定义加密转换流
        cs.Write(data, 0, data.Length); //加密数据写到内存流
        cs.FlushFinalBlock();
        return Convert.ToBase64String(ms.ToArray());//输出base64形式的加密字符串
    }
View Code

      DES解密

 

private string DES_Decrypt(string msg,string key)
    {
        byte[] data = Convert.FromBase64String(msg);
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8, a));//密匙
        byte[] rgbIV = ASCIIEncoding.ASCII.GetBytes(key.PadRight(8, a));//向量
        des.Key = rgbKey;//设置密匙
        des.IV = rgbIV; //设置初始化向量
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(data, 0, data.Length); //解密数据并写到内存流
        return Encoding.Default.GetString(ms.ToArray());//将解密后字节数组转换成字符串
    }
View Code

 

     

ASP.NET常用技术之加密解密,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。