public static void TripleDESRoundTrip192BitsNoneCBC() { byte[] key = "b43eaf0260813fb47c87ae073a146006d359ad04061eb0e6".HexToByteArray(); byte[] iv = "5fbc5bc21b8597d8".HexToByteArray(); using (var alg = new TripleDESCryptoServiceProvider()) { alg.Key = key; alg.IV = iv; alg.Padding = PaddingMode.None; alg.Mode = CipherMode.CBC; byte[] plainText = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); byte[] cipher = alg.Encrypt(plainText); byte[] expectedCipher = "dea36279600f19c602b6ed9bf3ffdac5ebf25c1c470eb61c".HexToByteArray(); Assert.Equal<byte>(expectedCipher, cipher); byte[] decrypted = alg.Decrypt(cipher); byte[] expectedDecrypted = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); Assert.Equal<byte>(expectedDecrypted, decrypted); } }
[PlatformSpecific(TestPlatforms.Windows)] // No support for CryptDeriveKey on Unix public static void CryptDeriveKey_KnownValues_TripleDes() { byte[] key = TestKnownValue_CryptDeriveKey( HashAlgorithmName.SHA1, TestPassword, "TripleDES", 192, s_testSalt, ByteUtils.HexToByteArray("97628A641949D99DCED35DB0ABCE20F21FF4DA9B46E00BCE")); // Verify key is valid using (var alg = new TripleDESCryptoServiceProvider()) { alg.Key = key; alg.IV = new byte[8]; alg.Padding = PaddingMode.None; alg.Mode = CipherMode.CBC; byte[] plainText = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); byte[] cipher = alg.Encrypt(plainText); byte[] expectedCipher = "9DC863445642B88AC46B3B107CB5A0ACC1596A176962EE8F".HexToByteArray(); Assert.Equal <byte>(expectedCipher, cipher); byte[] decrypted = alg.Decrypt(cipher); byte[] expectedDecrypted = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); Assert.Equal <byte>(expectedDecrypted, decrypted); } }
public void TestTripleDESAlgorithm() { var provider = new TripleDESCryptoServiceProvider(); provider.Key = new Byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; provider.IV = new Byte[] { 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 }; provider.Padding = PaddingMode.Zeros; provider.Mode = CipherMode.CBC; var encodedData = provider.Encrypt(_clearData); var decodedData = provider.Decrypt(encodedData); CollectionAssert.AreEqual(_clearData, decodedData); }
public static void TripleDESRoundTrip192BitsNoneCBC() { byte[] key = "b43eaf0260813fb47c87ae073a146006d359ad04061eb0e6".HexToByteArray(); byte[] iv = "5fbc5bc21b8597d8".HexToByteArray(); using (var alg = new TripleDESCryptoServiceProvider()) { alg.Key = key; alg.IV = iv; alg.Padding = PaddingMode.None; alg.Mode = CipherMode.CBC; byte[] plainText = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); byte[] cipher = alg.Encrypt(plainText); byte[] expectedCipher = "dea36279600f19c602b6ed9bf3ffdac5ebf25c1c470eb61c".HexToByteArray(); Assert.Equal <byte>(expectedCipher, cipher); byte[] decrypted = alg.Decrypt(cipher); byte[] expectedDecrypted = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); Assert.Equal <byte>(expectedDecrypted, decrypted); } }
public static void CryptDeriveKey_KnownValues_TripleDes() { byte[] key = TestKnownValue_CryptDeriveKey( HashAlgorithmName.SHA1, TestPassword, "TripleDES", 192, s_testSalt, ByteUtils.HexToByteArray("97628A641949D99DCED35DB0ABCE20F21FF4DA9B46E00BCE")); // Verify key is valid using (var alg = new TripleDESCryptoServiceProvider()) { alg.Key = key; alg.IV = new byte[8]; alg.Padding = PaddingMode.None; alg.Mode = CipherMode.CBC; byte[] plainText = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); byte[] cipher = alg.Encrypt(plainText); byte[] expectedCipher = "9DC863445642B88AC46B3B107CB5A0ACC1596A176962EE8F".HexToByteArray(); Assert.Equal<byte>(expectedCipher, cipher); byte[] decrypted = alg.Decrypt(cipher); byte[] expectedDecrypted = "79a86903608e133e020e1dc68c9835250c2f17b0ebeed91b".HexToByteArray(); Assert.Equal<byte>(expectedDecrypted, decrypted); } }