public MyTwofishManagedTransform(byte[] key) { if (key == null) { throw new ArgumentNullException("Key", "Key cannot be null."); } if (key.Length > 256 / 8) { throw new ArgumentOutOfRangeException("rgbKey", "Key size mismatch."); } byte[] paddingBuffer; int paddingCount = 0; if (key == null) { throw new ArgumentNullException("Key", "Key cannot be null."); } if (key.Length > 256 / 8) { throw new ArgumentOutOfRangeException("Key", "Key size mismatch."); } if (key.Length != 256 / 8 && key.Length != 192 / 8 && key.Length != 128 / 8) { if (key.Length < 256 / 8 && key.Length > 192 / 8) { paddingCount = 256 / 8 - key.Length; } if (key.Length < 192 / 8 && key.Length > 128 / 8) { paddingCount = 192 / 8 - key.Length; } if (key.Length < 128 / 8) { paddingCount = 128 / 8 - key.Length; } paddingBuffer = new byte[paddingCount]; List <byte> r = key.ToList(); r.AddRange(paddingBuffer); key = r.ToArray(); } int k = key.Length * 8 / 64; var key32 = new uint[2 * k]; Buffer.BlockCopy(key, 0, key32, 0, key.Length); this.Implementation = new TwofishImplementation(key32); }
internal TwofishManagedTransform(byte[] key, CipherMode mode, byte[] iv, TwofishManagedTransformMode transformMode, PaddingMode paddingMode) { TransformMode = transformMode; PaddingMode = paddingMode; var key32 = new uint[key.Length / 4]; Buffer.BlockCopy(key, 0, key32, 0, key.Length); if (iv != null) { var iv32 = new uint[iv.Length / 4]; Buffer.BlockCopy(iv, 0, iv32, 0, iv.Length); Implementation = new TwofishImplementation(key32, iv32, mode); } else { Implementation = new TwofishImplementation(key32, null, mode); } }