• 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

         

  • 相关阅读:
    视图容器组件使用
    组件的学习
    伸展树
    二叉搜索树
    二叉树
    笛卡尔树
    二叉堆
    vim配置
    使用vim-pathogen 进行插件管理
    C/C++中的变量和静态变量
  • 原文地址:https://www.cnblogs.com/net-study/p/3645306.html
Copyright © 2020-2023  润新知