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

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 encryption.
  8. /// </summary>
  9. public class Encryptor
  10. {
  11. private EncryptTransformer transformer;
  12. private byte[] initVec;
  13. private byte[] encKey;
  14. /// <summary>
  15. /// 
  16. /// </summary>
  17. /// <param name="algId">The algorithm to encrypt data.</param>
  18. public Encryptor(EncryptionAlgorithm algId)
  19. {
  20. transformer = new EncryptTransformer(algId);
  21. }
  22. /// <summary>
  23. /// 
  24. /// </summary>
  25. /// <param name="bytesData"></param>
  26. /// <param name="bytesKey"></param>
  27. /// <returns></returns>
  28. public byte[] Encrypt(byte[] bytesData, byte[] bytesKey)
  29. {
  30. MemoryStream memStreamEncryptedData = new MemoryStream();
  31. transformer.IV = initVec;
  32. ICryptoTransform transform = transformer.GetCryptoServiceProvider(bytesKey);
  33. CryptoStream encStream = new CryptoStream(memStreamEncryptedData, transform, CryptoStreamMode.Write);
  34. try
  35. {
  36. encStream.Write(bytesData, 0, bytesData.Length);
  37. }
  38. catch(Exception ex)
  39. {
  40. throw new Exception("Error while writing encrypted data to the stream: n" + ex.Message);
  41. }
  42. encKey = transformer.Key;
  43. initVec = transformer.IV;
  44. encStream.FlushFinalBlock();
  45. encStream.Close();
  46. return memStreamEncryptedData.ToArray();
  47. }
  48. /// <summary>
  49. /// 
  50. /// </summary>
  51. public byte[] IV
  52. {
  53. get
  54. {
  55. return initVec;
  56. }
  57. set
  58. {
  59. initVec = value;
  60. }
  61. }
  62. /// <summary>
  63. /// 
  64. /// </summary>
  65. public byte[] Key
  66. {
  67. get
  68. {
  69. return encKey;
  70. }
  71. }
  72. }
  73. }