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);
            }
        }
Esempio n. 5
0
        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);
            }
        }