首页 > Web开发 > 详细

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

时间:2014-04-05 01:23:44      阅读:443      评论:0      收藏:0      [点我收藏+]

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

一:MD5加密

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

      下面利用C#实现MD5加密

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

bubuko.com,布布扣
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进制形式的数据

bubuko.com,布布扣
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加密

bubuko.com,布布扣
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解密

 

bubuko.com,布布扣
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常用技术之加密解密,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/net-study/p/3645306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!