public void TestAesDefaultKey()
 {
     // arrange
     using (var csp = new AESCryptoProvider())
     {
         var random = new Random(42);
         var data   = new byte[(int)(csp.KeySize * 1.5)];
         random.NextBytes(data);
         var msSrc  = new MemoryStream();
         var mswSrc = msSrc.AsUnclosable();
         var msDst  = new MemoryStream();
         var mswDst = msDst.AsUnclosable();
         mswSrc.Write(data, 0, data.Length);
         mswSrc.Position = 0;
         // act
         csp.Encrypt(mswDst, mswSrc, (int)mswSrc.Length);
         mswSrc.Position = 0;
         mswDst.Position = 0;
         csp.Decrypt(mswSrc, mswDst, (int)mswDst.Length);
         var decryptedData = msSrc.GetBuffer();
         // assert
         for (int i = 0; i < msSrc.Length; i++)
         {
             Assert.AreEqual(data[i], decryptedData[i]);
         }
     }
 }
示例#2
0
        public void Execute()
        {
            var aes = new AESCryptoProvider
            {
                DefaultEncryptionEncodeMode = EncodeMode.Base64,
                DefaultEncoding             = Encoding.UTF8,
                Key = "12345678"
            };

            aes.BeforeSetSymmetricAlgorithm += (sender, args) =>
            {
                var algorithm = args.Data;
                // toDo something...
                algorithm.KeySize = 128;
            };
            aes.AfterSetSymmetricAlgorithm += (sender, args) =>
            {
                var algorithm = args.Data;
                // toDo something...
                Console.WriteLine($"KeySize: {algorithm.KeySize}, BlockSize: {algorithm.BlockSize}");
            };
            var data = "测试test123...";

            Console.WriteLine($"原始数据:{data}");
            var encrypt = aes.Encrypt(data);

            Console.WriteLine($"加密后:{encrypt}");
            var decrypt = aes.Decrypt(encrypt);

            Console.WriteLine($"解密后:{decrypt}");
        }
 public void TestAes()
 {
     // arrange
     using (var csp = new AESCryptoProvider())
     {
         var random   = new Random(42);
         var keySizes = csp.ValidKeySizes;
         foreach (var sz in keySizes)
         {
             csp.KeySize = sz;
             var key = new byte[sz / 8];
             GenerateKey(key);
             var data = new byte[(int)(sz / 8 * 1.5)];
             random.NextBytes(data);
             var msSrc  = new MemoryStream();
             var mswSrc = msSrc.AsUnclosable();
             var msDst  = new MemoryStream();
             var mswDst = msDst.AsUnclosable();
             mswSrc.Write(data, 0, data.Length);
             mswSrc.Position = 0;
             // act
             csp.Key = key;
             csp.Encrypt(mswDst, mswSrc, (int)mswSrc.Length);
             mswSrc.Position = 0;
             mswDst.Position = 0;
             csp.Decrypt(mswSrc, mswDst, (int)mswDst.Length);
             var decryptedData = msSrc.GetBuffer();
             // assert
             for (int i = 0; i < msSrc.Length; i++)
             {
                 Assert.AreEqual(data[i], decryptedData[i]);
             }
         }
     }
 }
示例#4
0
        public void CanDecrypt()
        {
            //These two values should not be hard coded in your code.
            byte[] key    = { 251, 9, 67, 117, 237, 158, 138, 150, 255, 97, 103, 128, 183, 65, 76, 161, 7, 79, 244, 225, 146, 180, 51, 123, 118, 167, 45, 10, 184, 181, 202, 190 };
            byte[] vector = { 214, 11, 221, 108, 210, 71, 14, 15, 151, 57, 241, 174, 177, 142, 115, 137 };

            using (var rijndaelHelper = new AESCryptoProvider(key, vector))
            {
                var encrypt = rijndaelHelper.Encrypt(RawValue);
                var decrypt = rijndaelHelper.Decrypt(encrypt);
                Assert.AreEqual(RawValue, decrypt);
            }
        }