对称加密算法实现C#数据加密

韦一笑 2009-08-13

以下是关于对称加密算法的C#数据加密实现代码,大家可以根据需要更改不同的算法,文中以Rijndael算法为例:

  1. using System;   
  2. using System.IO;   
  3. using System.Security.Cryptography;   
  4. using System.Text;   
  5.  
  6. namespace DataCrypto   
  7. {   
  8. ///    
  9. /// C#数据加密对称加密算法类   
  10. ///    
  11. public class SymmetricMethod   
  12. {   
  13.  
  14. private SymmetricAlgorithm mobjCryptoService;   
  15. private string Key;   
  16. ///    
  17. /// 对称加密类的C#数据加密   
  18. ///    
  19. public SymmetricMethod()   
  20. {   
  21. mobjCryptoService = new RijndaelManaged();   
  22. Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";   
  23. }   
  24. ///    
  25. /// 获得密钥   
  26. ///    
  27. /// 密钥   
  28. private byte[] GetLegalKey()   
  29. {   
  30. string sTemp = Key;   
  31. mobjCryptoService.GenerateKey();   
  32. byte[] bytTemp = mobjCryptoService.Key;   
  33. int KeyLength = bytTemp.Length;   
  34. if (sTemp.Length > KeyLength)   
  35. sTemp = sTemp.Substring(0, KeyLength);   
  36. else if (sTemp.Length < KeyLength)   
  37. sTemp = sTemp.PadRight(KeyLength, ' ');   
  38. return ASCIIEncoding.ASCII.GetBytes(sTemp);   
  39. }   
  40. ///    
  41. /// 获得初始向量IV   
  42. ///    
  43. /// 初试向量IV   
  44. private byte[] GetLegalIV()   
  45. {   
  46. string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";   
  47. mobjCryptoService.GenerateIV();   
  48. byte[] bytTemp = mobjCryptoService.IV;   
  49. int IVLength = bytTemp.Length;   
  50. if (sTemp.Length > IVLength)   
  51. sTemp = sTemp.Substring(0, IVLength);   
  52. else if (sTemp.Length < IVLength)   
  53. sTemp = sTemp.PadRight(IVLength, ' ');   
  54. return ASCIIEncoding.ASCII.GetBytes(sTemp);   
  55. }   
  56. ///    
  57. /// 加密方法   
  58. ///    
  59. /// 

相关推荐