public void ProtectMethodParallelLoad()
        {
            // preparation
            var config = new Mock <Microsoft.Extensions.Configuration.IConfiguration>();

            config.Setup(_ => _["CRYPTION_KEY"]).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
            config.Setup(_ => _["CRYPTION_IV"]).Returns("o4Pm6LJ+/q3UxwZArVLdkQ==");
            config.Setup(_ => _["CRYPTION_HASH"]).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
            config.Setup(_ => _["CRYPTION_KEY2"]).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
            config.Setup(_ => _["CRYPTION_IV2"]).Returns("o4Pm6LJ+/q3UxwZArVLdkQ==");
            var logger      = new Mock <ILogger <CryptionService> >();
            var instance    = new CryptionService(config.Object, logger.Object);
            var enc         = System.Text.Encoding.UTF8;
            var secretValue = Convert.ToBase64String(enc.GetBytes("Secret"));
            var option      = new ParallelOptions()
            {
                MaxDegreeOfParallelism = 512
            };

            // action
            Parallel.For(0, 13000, option, i =>
            {
                // action
                var protectSecret = instance.Protect(secretValue);
                var actual        = instance.Unprotect(protectSecret);
                // assert
                Assert.AreEqual(secretValue, actual);
            });
        }
 public void ProtectMethod(string secret)
 {
     // preparation
     var config = new Mock<Microsoft.Extensions.Configuration.IConfiguration>();
     config.Setup(_ => _.GetSection("CRYPTION_KEY").Value).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
     config.Setup(_ => _.GetSection("CRYPTION_IV").Value).Returns("o4Pm6LJ+/q3UxwZArVLdkQ==");
     config.Setup(_ => _.GetSection("CRYPTION_HASH").Value).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
     config.Setup(_ => _.GetSection("CRYPTION_KEY2").Value).Returns("2GH3X8zK8xeJBbwx18yxCB9T7t2xzqqVH9LzJ1cmchI=");
     config.Setup(_ => _.GetSection("CRYPTION_IV2").Value).Returns("o4Pm6LJ+/q3UxwZArVLdkQ==");
     var logger = new Mock<ILogger<CryptionService>>();
     var instance = new CryptionService(config.Object, logger.Object);
     var enc = System.Text.Encoding.UTF8;
     var secretValue = Convert.ToBase64String(enc.GetBytes(secret));
     // action
     var protectSecret = instance.Protect(secretValue);
     var actual = instance.Unprotect(protectSecret);
     // assert
     Assert.AreEqual(secretValue, actual);
 }