对着月亮发誓,不如顶着太阳做事!
认真的人改变自己,执着的人改变命运!

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

posted on 2007-09-06 14:29  抽象的继承  阅读(3191)  评论(0编辑  收藏  举报