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

  • 相关阅读:
    国家行政区划地区编码表
    Java循环中标签的作用(转)
    通过ribbon 根据服务名获取所有服务实例的IP和端口列表
    rabbitmq重装依赖的erlang 要注意
    Rabbitmq关于集群节点功能的读书笔记
    CentOS7统计某个进程当前的线程数
    理解同步、异步、阻塞、非阻塞(传送门)
    代理模式和装饰模式区别
    【转载】Asp.Net生成图片验证码工具类
    【转载】使用宝塔Linux面板屏蔽某些IP访问你的服务器
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2627740.html
Copyright © 2011-2022 走看看