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

  • 相关阅读:
    C 语言 静态库和动态库的创建和应用
    C++ 中英文术语对照
    下午
    [转]内核 do_fork 函数源代码浅析
    关于C#反射机制,自己写的
    获取字符串中数字
    关于C#反射机制,来源于网络
    关于 Nhinernate 的one to one(转载)
    鼠标坐标的记录
    关于C#中hibernate.cfg.xml动态加载问题
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2627740.html
Copyright © 2011-2022 走看看