System.Security.Cryptography.TripleDESTransform.TripleDESTransform C# (CSharp) Method

TripleDESTransform() public method

public TripleDESTransform ( TripleDES algo, bool encryption, byte key, byte iv ) : System.Runtime.InteropServices
algo TripleDES
encryption bool
key byte
iv byte
return System.Runtime.InteropServices
		public TripleDESTransform (TripleDES algo, bool encryption, byte[] key, byte[] iv) : base (algo, encryption, iv) 
		{
#if NET_2_0
			if (key == null) {
				key = GetStrongKey ();
			}
#endif
			// note: checking weak keys also checks valid key length
			if (TripleDES.IsWeakKey (key)) {
				string msg = Locale.GetText ("This is a known weak key.");
				throw new CryptographicException (msg);
			}

			byte[] key1 = new byte [8];
			byte[] key2 = new byte [8];
			byte[] key3 = new byte [8];
			DES des = DES.Create ();
			Buffer.BlockCopy (key, 0, key1, 0, 8);
			Buffer.BlockCopy (key, 8, key2, 0, 8);
			if (key.Length == 16)
				Buffer.BlockCopy (key, 0, key3, 0, 8);
			else
				Buffer.BlockCopy (key, 16, key3, 0, 8);
	
			// note: some modes (like CFB) requires encryption when decrypting
			if ((encryption) || (algo.Mode == CipherMode.CFB)) {
				E1 = new DESTransform (des, true, key1, iv);
				D2 = new DESTransform (des, false, key2, iv);
				E3 = new DESTransform (des, true, key3, iv);
			}
			else {
				D1 = new DESTransform (des, false, key3, iv);
				E2 = new DESTransform (des, true, key2, iv);
				D3 = new DESTransform (des, false, key1, iv);
			}
		}