예제 #1
0
        public int Encrypt_CharacterLength_CipherIsExpectedNumberOfBytes(string plainText)
        {
            using var provider = new AesCbc();
            var encryptionResult = provider.Encrypt(plainText);

            return(encryptionResult.Cipher.Length);
        }
예제 #2
0
        public void Decrypt_NullIV_ThrowsArgumentNullException()
        {
            CbcResult encryptionResult;

            using (var provider1 = new AesCbc())
            {
                encryptionResult = provider1.Encrypt("Hello world");
            }

            using var provider2 = new AesCbc();
            Assert.That(() => provider2.Decrypt(encryptionResult.Cipher, encryptionResult.Key, null), Throws.ArgumentNullException);
        }
예제 #3
0
        public void Decrypt_KeyIsNot32Bytes_ThrowsArgumentException()
        {
            CbcResult encryptionResult;

            using (var provider1 = new AesCbc())
            {
                encryptionResult = provider1.Encrypt("Hello world");
            }

            using var provider2 = new AesCbc();
            Assert.That(() => provider2.Decrypt(encryptionResult.Cipher, new byte[16], encryptionResult.IV), Throws.ArgumentException);
        }
예제 #4
0
        public void Decrypt_CipherLengthNotDivisibleBy16_ThrowsArgumentException()
        {
            CbcResult encryptionResult;

            using (var provider1 = new AesCbc())
            {
                encryptionResult = provider1.Encrypt("Hello world");
            }

            using var provider2 = new AesCbc();
            Assert.That(() => provider2.Decrypt(new byte[new Random().Next(1, 16)], encryptionResult.Key, encryptionResult.IV), Throws.ArgumentException);
        }
예제 #5
0
        public void TestEncrypt()
        {
            var key       = new HexString("0102030405060708090A0B0C0D0E0F10");
            var iv        = new HexString("1112131415161718191A1B1C1D1E1F20");
            var clearText = "Hello World, let's try something longer than just one block.";
            var data      = System.Text.Encoding.ASCII.GetBytes(clearText);
            var expected  = new HexString("C29B1B0E628232FA5A8F77F88546DF259D8B8B4E73B5D21D9BA1EDB557CAE0A67CA855B59DC1F423A2540EC15377EF70B7750F310C8E40AE68A52E57D478BB60");

            var actual = AesCbc.Encrypt(key.Bytes.ToArray(), iv.Bytes.ToArray(), data);

            CollectionAssert.AreEqual(expected.Bytes.ToArray(), actual);
        }
예제 #6
0
        public void TestEncryptOneBlock()
        {
            var key       = new HexString("0102030405060708090A0B0C0D0E0F10");
            var iv        = new HexString("1112131415161718191A1B1C1D1E1F20");
            var clearText = "Hello World";
            var data      = System.Text.Encoding.ASCII.GetBytes(clearText);
            var expected  = new HexString("E0A209AC01C9052681925942E0E5EA53");

            var actual = AesCbc.Encrypt(key.Bytes.ToArray(), iv.Bytes.ToArray(), data);

            CollectionAssert.AreEqual(expected.Bytes.ToArray(), actual);
        }
예제 #7
0
        public void Decrypt_PlainTextStringEncrypted_ResultMatchesPlaintext(string plainText)
        {
            CbcResult encryptionResult;

            using (var provider1 = new AesCbc())
            {
                encryptionResult = provider1.Encrypt(plainText);
            }

            using var provider2 = new AesCbc();
            var plainTextResult = provider2.Decrypt(encryptionResult.Cipher, encryptionResult.Key, encryptionResult.IV);

            Assert.That(plainTextResult, Is.EqualTo(plainText));
        }
예제 #8
0
 public void Encrypt_NullPlainText_ThrowsArgumentNullException()
 {
     using var provider = new AesCbc();
     Assert.That(() => provider.Encrypt(null as string), Throws.ArgumentNullException);
 }
예제 #9
0
 public void Encrypt_EmptyPlainText_ThrowsArgumentException()
 {
     using var provider = new AesCbc();
     Assert.That(() => provider.Encrypt(string.Empty), Throws.ArgumentException);
 }