TripleDesCipherBenchmarks.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using BenchmarkDotNet.Attributes;
  2. using Renci.SshNet.Security.Cryptography.Ciphers;
  3. using CipherMode = System.Security.Cryptography.CipherMode;
  4. namespace Renci.SshNet.Benchmarks.Security.Cryptography.Ciphers
  5. {
  6. [MemoryDiagnoser]
  7. public class TripleDesCipherBenchmarks
  8. {
  9. private readonly byte[] _key;
  10. private readonly byte[] _iv;
  11. private readonly byte[] _data;
  12. public TripleDesCipherBenchmarks()
  13. {
  14. _key = new byte[24];
  15. _iv = new byte[8];
  16. _data = new byte[32 * 1024];
  17. Random random = new(Seed: 12345);
  18. random.NextBytes(_key);
  19. random.NextBytes(_iv);
  20. random.NextBytes(_data);
  21. }
  22. [Benchmark]
  23. public byte[] Encrypt_CBC()
  24. {
  25. return new TripleDesCipher(_key, _iv, CipherMode.CBC, false).Encrypt(_data);
  26. }
  27. [Benchmark]
  28. public byte[] Decrypt_CBC()
  29. {
  30. return new TripleDesCipher(_key, _iv, CipherMode.CBC, false).Decrypt(_data);
  31. }
  32. [Benchmark]
  33. public byte[] Encrypt_CFB()
  34. {
  35. return new TripleDesCipher(_key, _iv, CipherMode.CFB, false).Encrypt(_data);
  36. }
  37. [Benchmark]
  38. public byte[] Decrypt_CFB()
  39. {
  40. return new TripleDesCipher(_key, _iv, CipherMode.CFB, false).Decrypt(_data);
  41. }
  42. }
  43. }