public void IsActuallyEncryptedTest()
        {
            // Make a key
            byte[] key;
            int ivLength;
            using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
            {
                key = aes.Key;
                ivLength = aes.BlockSize / 8;
            }

            // Make a provider
            IBlobCryptoProvider symmetricProvider = new SymmetricBlobCryptoProvider(key);

            var encryptedStream = symmetricProvider.EncryptedStream(streamSample);
            
            byte[] result = new byte[sampleStreamSize + ivLength];
            encryptedStream.Read(result, 0, result.Length);

            Assert.IsFalse(
                result.SequenceEqual(streamSample.ToArray()),
                "Encrypted stream is not encrypted");

            Assert.IsFalse(
                result.Take(5).SequenceEqual(streamSample.ToArray().Take(5)),
                "Encrypted stream is not encrypted");
        }
        public void EncryptAndDecryptStreamTest()
        {
            // Make a key
            byte[] key;
            using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
                key = aes.Key;

            // Make a provider
            IBlobCryptoProvider symmetricProvider = new SymmetricBlobCryptoProvider(key);

            // In all cases we are READING from streams 
            // (read from original, read from encrypted, read from decrypted).
            var encryptedStream = symmetricProvider.EncryptedStream(streamSample);
            var decryptedStream = symmetricProvider.DecryptedStream(encryptedStream);

            byte[] result = new byte[sampleStreamSize];
            decryptedStream.Read(result, 0, result.Length);

            Assert.IsTrue(
                result.SequenceEqual(streamSample.ToArray()),
                "Decrypted data does not match original data");
        }
        public void ToKeyFileStringAndBackTest()
        {
            IBlobCryptoProvider symmetricProvider = new SymmetricBlobCryptoProvider();
            
            string keyString = symmetricProvider.ToKeyFileString();

            IBlobCryptoProvider clonedProvider = ProviderFactory.CreateProviderFromKeyFileString(keyString);

            var encryptedStream = symmetricProvider.EncryptedStream(streamSample);
            var decryptedStream = clonedProvider.DecryptedStream(encryptedStream);

            byte[] result = new byte[sampleStreamSize];
            decryptedStream.Read(result, 0, result.Length);

            Assert.IsTrue(
                result.SequenceEqual(streamSample.ToArray()),
                "Decrypted data does not match original data");            
        }