zoukankan      html  css  js  c++  java
  • .net下DES加密解密算法的封装

    private string _DESKey=""; 
    public string DESKey  
      {
       set
       {
        _DESKey=value;
       }
      }
      public string DESEncrypt(string toEncrypt)
      {
       //定义DES加密服务提供类
       DESCryptoServiceProvider des=new DESCryptoServiceProvider();
       //加密字符串转换为byte数组
       byte[] inputByte=System.Text.ASCIIEncoding.UTF8.GetBytes(toEncrypt);
       //加密密匙转化为byte数组
       byte[] key = Encoding.ASCII.GetBytes(_DESKey); //DES密钥(必须8字节)
       des.Key=key;
       des.IV=key;
       //创建其支持存储区为内存的流
       MemoryStream ms=new MemoryStream();
       //定义将数据流链接到加密转换的流
       CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
       cs.Write(inputByte, 0, inputByte.Length);
       cs.FlushFinalBlock();
       StringBuilder ret = new StringBuilder();
       foreach (byte b in ms.ToArray())
       {
        //向可变字符串追加转换成十六进制数字符串的加密后byte数组。
        ret.AppendFormat("{0:X2}", b);
       }
       return ret.ToString();

      }
      public string DESDecrypt(string toDecrypt)
      {
       //定义DES加密解密服务提供类
       DESCryptoServiceProvider des = new DESCryptoServiceProvider();
       //加密密匙转化为byte数组
       byte[] key = Encoding.ASCII.GetBytes(_DESKey);
       des.Key = key;
       des.IV = key;
       //将被解密的字符串每两个字符以十六进制解析为byte类型,组成byte数组
       int length = (toDecrypt.Length / 2);
       byte[] inputByte = new byte[length];
       for (int index = 0; index < length; index++)
       {
        string substring = toDecrypt.Substring(index * 2, 2);
        inputByte[index] = Convert.ToByte(substring, 16);
       }
       //创建其支持存储区为内存的流
       MemoryStream ms = new MemoryStream();
       //定义将数据流链接到加密转换的流
       CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
       cs.Write(inputByte, 0, inputByte.Length);
       cs.FlushFinalBlock();

       return ASCIIEncoding.UTF8.GetString((ms.ToArray()));
      }

  • 相关阅读:
    Python(93)_网络编程基础
    Web前端(13)_路径
    Web前端(12)_注释
    Web前端(11)_base标签
    Python(91)_python复习
    Web前端(10)_css文本样式
    Web前端(9)_div+span等标签
    虚拟化(6)_CPU虚拟化
    虚拟化(5)_打开tcp监听
    虚拟化(4)_离线克隆与在线克隆
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2627740.html
Copyright © 2011-2022 走看看