| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #if !NET
- using System;
- using System.Security.Cryptography;
- using Org.BouncyCastle.Crypto.Paddings;
- namespace Renci.SshNet.Security.Cryptography.Ciphers
- {
- public partial class TripleDesCipher
- {
- private sealed class BlockImpl : BlockCipher, IDisposable
- {
- private readonly TripleDES _tripleDES;
- private readonly ICryptoTransform _encryptor;
- private readonly ICryptoTransform _decryptor;
- public BlockImpl(byte[] key, CipherMode mode, IBlockCipherPadding padding)
- : base(key, 8, mode, padding)
- {
- var tripleDES = TripleDES.Create();
- tripleDES.Key = key;
- tripleDES.Mode = System.Security.Cryptography.CipherMode.ECB;
- tripleDES.Padding = PaddingMode.None;
- _tripleDES = tripleDES;
- _encryptor = tripleDES.CreateEncryptor();
- _decryptor = tripleDES.CreateDecryptor();
- }
- public override int EncryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
- {
- return _encryptor.TransformBlock(inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
- }
- public override int DecryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
- {
- return _decryptor.TransformBlock(inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
- }
- public void Dispose()
- {
- _tripleDES.Dispose();
- _encryptor.Dispose();
- _decryptor.Dispose();
- }
- }
- }
- }
- #endif
|