コード例 #1
0
 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 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]);
             }
         }
     }
 }
コード例 #3
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}");
        }
コード例 #4
0
        public void CanEncrypt()
        {
            //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);
                Assert.AreNotEqual("StringToEncrypt", encrypt);
            }
        }
コード例 #5
0
        public object ShowEncryptedOrders(string RSAPublicKey)
        {
            //for encription data using client public key
            var rsaProvider = new RSACryptoServiceProvider(1024);

            rsaProvider.FromXmlString(RSAPublicKey);    //set public rsa key of client to server rsaProvider

            var rsaSignatureProvider          = new RSACryptoServiceProvider();
            var rsaSignatureProviderPublicKey = rsaSignatureProvider.ToXmlString(false);  //public key of rsa signature provider

            //create new instance of pbkdf with random iv
            var pbKdf = new Rfc2898DeriveBytes("8080808080808080", 16);

            byte[] aesKey = pbKdf.GetBytes(16); //System.Text.Encoding.UTF8.GetBytes("808080808080808e");
            byte[] aesIv  = pbKdf.GetBytes(16); //System.Text.Encoding.UTF8.GetBytes("8080808080808080");

            using (var db = new ApplicationDbContext())
            {
                var userId = User.Identity.GetUserId();
                var orders = db.UserOrders
                             .Where(o => o.UserId == userId)
                             .Select(o => new
                {
                    OrderId         = o.Id,
                    CinemaName      = o.FilmSession.Cinema.Name,
                    FilmName        = o.FilmSession.Film.Name,
                    HallName        = o.FilmSession.HallName,
                    FilmDetailsLink = "/Home/FilmDetails/" + o.FilmSession.FilmId.ToString(),
                    Price           = o.FilmSession.Price,
                    DateTime        = o.FilmSession.DateTime
                }).ToList();

                var encryptedAesKey = rsaProvider.Encrypt(aesKey, true);
                var encryptedAesIv  = rsaProvider.Encrypt(aesIv, true);
                var signedAesKey    = rsaSignatureProvider.SignData(encryptedAesKey, new SHA1CryptoServiceProvider());

                var responseData = new
                {
                    encryptedAesKey    = System.Convert.ToBase64String(encryptedAesKey),
                    encryptedAesIv     = System.Convert.ToBase64String(encryptedAesIv),
                    orders             = AESCryptoProvider.Encrypt(JsonConvert.SerializeObject(orders), aesKey, aesIv),
                    signedData         = System.Convert.ToBase64String(signedAesKey),
                    signaturePublicKey = rsaSignatureProviderPublicKey
                };
                return(JsonConvert.SerializeObject(responseData));
            }
        }