C#DES加密解密

using System.Security.Cryptography;
using  System.IO; 
using  System.Text;

///DES加密
  public string DESEncrypt(string  pToEncrypt,  string  sKey)
  { 
   DESCryptoServiceProvider  des 
=  new  DESCryptoServiceProvider(); 
  
byte[]  inputByteArray  =  Encoding.Default.GetBytes(pToEncrypt); 
   des.Key 
=  ASCIIEncoding.ASCII.GetBytes(sKey); 
   des.IV 
=  ASCIIEncoding.ASCII.GetBytes(sKey); 
   MemoryStream  ms 
=  new  MemoryStream(); 
   CryptoStream  cs 
=  new  CryptoStream(ms,  des.CreateEncryptor(),CryptoStreamMode.Write); 
   cs.Write(inputByteArray, 
0,  inputByteArray.Length); 
   cs.FlushFinalBlock(); 
   StringBuilder  ret 
=  new  StringBuilder(); 
  
foreach(byte  b  in  ms.ToArray()) 
   { 
    ret.AppendFormat(
"{0:X2}",  b); 
   } 
   ret.ToString(); 
  
return  ret.ToString(); 


  }

 
///DES解密
  public string DESDecrypt(string  pToDecrypt,  string  sKey)
  {
   DESCryptoServiceProvider  des 
=  new  DESCryptoServiceProvider(); 

  
byte[]  inputByteArray  =  new  byte[pToDecrypt.Length  /  2]; 
  
for(int  x  =  0;  x  <  pToDecrypt.Length  /  2;  x++
   { 
   
int  i  =  (Convert.ToInt32(pToDecrypt.Substring(x  *  22),  16)); 
    inputByteArray[x] 
=  (byte)i; 
   } 

   des.Key 
=  ASCIIEncoding.ASCII.GetBytes(sKey); 
   des.IV 
=  ASCIIEncoding.ASCII.GetBytes(sKey); 
   MemoryStream  ms 
=  new  MemoryStream(); 
   CryptoStream  cs 
=  new  CryptoStream(ms,  des.CreateDecryptor(),CryptoStreamMode.Write); 
   cs.Write(inputByteArray, 
0,  inputByteArray.Length); 
   cs.FlushFinalBlock(); 

   StringBuilder  ret 
=  new  StringBuilder(); 
            
  
return  System.Text.Encoding.Default.GetString(ms.ToArray()); 
  }
posted on 2006-08-25 17:34  Yang-S  阅读(772)  评论(0)    收藏  举报