Decryptor.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:1k
源码类别:

Ajax

开发平台:

C#

  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4. namespace AjaxPro.Cryptography
  5. {
  6. /// <summary>
  7. /// General class for decryption.
  8. /// </summary>
  9. public class Decryptor
  10. {
  11. private DecryptTransformer transformer;
  12. private byte[] initVec;
  13. /// <summary>
  14. /// 
  15. /// </summary>
  16. /// <param name="algId">The algorithm to decrypt data.</param>
  17. public Decryptor(EncryptionAlgorithm algId)
  18. {
  19. transformer = new DecryptTransformer(algId);
  20. }
  21. /// <summary>
  22. /// 
  23. /// </summary>
  24. /// <param name="bytesData"></param>
  25. /// <param name="bytesKey"></param>
  26. /// <returns></returns>
  27. public byte[] Decrypt(byte[] bytesData, byte[] bytesKey)
  28. {
  29. MemoryStream memStreamDecryptedData = new MemoryStream();
  30. transformer.IV = initVec;
  31. ICryptoTransform transform = transformer.GetCryptoServiceProvider(bytesKey);
  32. CryptoStream decStream = new CryptoStream(memStreamDecryptedData, transform, CryptoStreamMode.Write);
  33. try
  34. {
  35. decStream.Write(bytesData, 0, bytesData.Length);
  36. }
  37. catch(Exception ex)
  38. {
  39. throw new Exception("Error while writing encrypted data to the stream: n" + ex.Message);
  40. }
  41. decStream.FlushFinalBlock();
  42. decStream.Close();
  43. return memStreamDecryptedData.ToArray();
  44. }
  45. /// <summary>
  46. /// 
  47. /// </summary>
  48. public byte[] IV
  49. {
  50. set
  51. {
  52. initVec = value;
  53. }
  54. }
  55. }
  56. }