c#DES加密和解密

  1. using System.Security.Cryptography;   
  2. using    System.IO;     
  3. using    System.Text;   
  4.   
  5. ///DES加密   
  6.   public string MD5Encrypt(string    pToEncrypt,  string    sKey)   
  7.     {     
  8.      DESCryptoServiceProvider    des  =  new    DESCryptoServiceProvider();     
  9.    byte[]    inputByteArray  =    Encoding.Default.GetBytes(pToEncrypt);     
  10.      des.Key  =    ASCIIEncoding.ASCII.GetBytes(sKey);     
  11.      des.IV  =    ASCIIEncoding.ASCII.GetBytes(sKey);     
  12.      MemoryStream    ms  =  new    MemoryStream();     
  13.      CryptoStream    cs  =  new    CryptoStream(ms,    des.CreateEncryptor(),CryptoStreamMode.Write);     
  14.      cs.Write(inputByteArray,  0,    inputByteArray.Length);     
  15.      cs.FlushFinalBlock();     
  16.      StringBuilder    ret  =  new    StringBuilder();     
  17.    foreach(byte    b  in    ms.ToArray())     
  18.      {     
  19.       ret.AppendFormat("{0:X2}",    b);     
  20.      }     
  21.      ret.ToString();     
  22.    return    ret.ToString();     
  23.   
  24.   
  25.     }   
  26.   
  27.   ///DES解密   
  28.   public string MD5Decrypt(string    pToDecrypt,  string    sKey)   
  29.     {   
  30.      DESCryptoServiceProvider    des  =  new    DESCryptoServiceProvider();     
  31.   
  32.    byte[]    inputByteArray  =  new  byte[pToDecrypt.Length  /  2];     
  33.    for(int    x  =  0;    x  <    pToDecrypt.Length  /  2;    x++)     
  34.      {     
  35.     int    i  =    (Convert.ToInt32(pToDecrypt.Substring(x  *  2,  2),  16));     
  36.       inputByteArray[x]  =    (byte)i;     
  37.      }     
  38.   
  39.      des.Key  =    ASCIIEncoding.ASCII.GetBytes(sKey);     
  40.      des.IV  =    ASCIIEncoding.ASCII.GetBytes(sKey);     
  41.      MemoryStream    ms  =  new    MemoryStream();     
  42.      CryptoStream    cs  =  new    CryptoStream(ms,    des.CreateDecryptor(),CryptoStreamMode.Write);     
  43.      cs.Write(inputByteArray,  0,    inputByteArray.Length);     
  44.      cs.FlushFinalBlock();     
  45.   
  46.      StringBuilder    ret  =  new    StringBuilder();     
  47.                 
  48.    return    System.Text.Encoding.Default.GetString(ms.ToArray());     
  49.     }  
 
C#代码
  1. using System;   
  2. using System.Text;   
  3. using System.Globalization;   
  4. using System.Security.Cryptography;   
  5. class DES   
  6. {   
  7. // 创建Key   
  8. public string GenerateKey()   
  9. {   
  10. DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();   
  11. return ASCIIEncoding.ASCII.GetString(desCrypto.Key);   
  12. }   
  13. // 加密字符串   
  14. public string EncryptString(string sInputString, string sKey)   
  15. {   
  16. byte [] data = Encoding.UTF8.GetBytes(sInputString);   
  17. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();   
  18. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);   
  19. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);   
  20. ICryptoTransform desencrypt = DES.CreateEncryptor();   
  21. byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);   
  22. return BitConverter.ToString(result);   
  23. }   
  24. // 解密字符串   
  25. public string DecryptString(string sInputString, string sKey)   
  26. {   
  27. string [] sInput = sInputString.Split("-".ToCharArray());   
  28. byte [] data = new byte[sInput.Length];   
  29. for(int i = 0; i < sInput.Length; i++)   
  30. {   
  31. data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);   
  32. }   
  33. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();   
  34. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);   
  35. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);   
  36. ICryptoTransform desencrypt = DES.CreateDecryptor();   
  37. byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);   
  38. return Encoding.UTF8.GetString(result);   
  39. }   
  40. }   
  41. class Test   
  42. {   
  43. static void Main()   
  44. {   
  45. DES des = new DES();   
  46. string key = des.GenerateKey();   
  47. string s0 = "中国软件 - csdn.net";   
  48. string s1 = des.EncryptString(s0, key);   
  49. string s2 = des.DecryptString(s1, key);   
  50. Console.WriteLine("原串: [{0}]", s0);   
  51. Console.WriteLine("加密: [{0}]", s1);   
  52. Console.WriteLine("解密: [{0}]", s2);   
  53. }   
  54. }  
posted @ 2010-03-04 14:46  三月软件工作室——任忌  阅读(14387)  评论(4编辑  收藏  举报