public CryptoTransformHelperTest()
        {
            var provider = new SymmetricAlgorithmProvider <RC2CryptoServiceProvider>(
                new RC2KeyVectorProvider("P@ssw0rd", 40));

            m_algorithm = provider.Create();
        }
예제 #2
0
        public void GetSymmetricAlgorithmProvider()
        {
            SymmetricCryptoProviderFactory factory = new SymmetricCryptoProviderFactory(context);
            SymmetricAlgorithmProvider     sym     = (SymmetricAlgorithmProvider)factory.CreateSymmetricCryptoProvider("symmetricAlgorithm1");

            Assert.IsNotNull(sym);
        }
        public static void TripleDES_Encrypt_Decrypt()
        {
            // Arrange
            var algorithmProvider = new SymmetricAlgorithmProvider <TripleDESCryptoServiceProvider>(
                new TripleDESKeyVectorProvider("sDE0#2x.4", 192));

            // Act
            Encrypt_Decrypt(algorithmProvider);

            // Assert
        }
        public static void Rijndael_Encrypt_Decrypt()
        {
            // Arrange
            var algorithmProvider = new SymmetricAlgorithmProvider <RijndaelManaged>(
                new RijndaelKeyVectorProvider("sDE0#2x.4", 256));

            // Act
            Encrypt_Decrypt(algorithmProvider);

            // Assert
        }
        public static void RC2_Encrypt_Decrypt()
        {
            // Arrange
            var algorithmProvider = new SymmetricAlgorithmProvider <RC2CryptoServiceProvider>(
                new RC2KeyVectorProvider("sDE0#2x.4", 128));

            // Act
            Encrypt_Decrypt(algorithmProvider);

            // Assert
        }
        public void TripleDESEncryptAndDecrypt()
        {
            SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(TripleDESCryptoServiceProvider.Create(), key);

            byte[] plaintext  = new byte[] { 5, 4, 3, 2 };
            byte[] ciphertext = provider.Encrypt(plaintext);
            byte[] plaintext2 = provider.Decrypt(ciphertext);

            Assert.IsFalse(CommonUtil.CompareBytes(plaintext, ciphertext));
            Assert.IsTrue(CommonUtil.CompareBytes(plaintext, plaintext2));
        }
예제 #7
0
        /// <summary>
        /// This method supports the Enterprise Library infrastructure and is not intended to be used directly from your code.
        /// Builds a <see cref="SymmetricAlgorithmProvider"/> based on an instance of <see cref="SymmetricAlgorithmProviderData"/>.
        /// </summary>
        /// <seealso cref="SymmetricCryptoProviderCustomFactory"/>
        /// <param name="context">The <see cref="IBuilderContext"/> that represents the current building process.</param>
        /// <param name="objectConfiguration">The configuration object that describes the object to build. Must be an instance of <see cref="SymmetricAlgorithmProviderData"/>.</param>
        /// <param name="configurationSource">The source for configuration objects.</param>
        /// <param name="reflectionCache">The cache to use retrieving reflection information.</param>
        /// <returns>A fully initialized instance of <see cref="SymmetricAlgorithmProvider"/>.</returns>
        public ISymmetricCryptoProvider Assemble(IBuilderContext context, SymmetricProviderData objectConfiguration, IConfigurationSource configurationSource, ConfigurationReflectionCache reflectionCache)
        {
            SymmetricAlgorithmProviderData castedObjectConfiguration
                = (SymmetricAlgorithmProviderData)objectConfiguration;

            ISymmetricCryptoProvider createdObject
                = new SymmetricAlgorithmProvider(
                      castedObjectConfiguration.AlgorithmType,
                      castedObjectConfiguration.ProtectedKeyFilename,
                      castedObjectConfiguration.ProtectedKeyProtectionScope);

            return(createdObject);
        }
예제 #8
0
        public void SetUp()
        {
            nameFormatter           = new AppDomainNameFormatter(applicationInstanceName);
            instrumentationProvider = new SymmetricAlgorithmInstrumentationProvider(instanceName, true, true, nameFormatter);
            formattedInstanceName   = nameFormatter.CreateName(instanceName);
            totalSymmetricDecryptionPerformedCounter = new EnterpriseLibraryPerformanceCounter(SymmetricAlgorithmInstrumentationProvider.counterCategoryName, SymmetricAlgorithmInstrumentationProvider.TotalSymmetricDecryptionPerformedCounterName, formattedInstanceName);
            totalSymmetricEncryptionPerformedCounter = new EnterpriseLibraryPerformanceCounter(SymmetricAlgorithmInstrumentationProvider.counterCategoryName, SymmetricAlgorithmInstrumentationProvider.TotalSymmetricEncryptionPerformedCounterName, formattedInstanceName);

            stream   = CreateSymmetricKey();
            provider = new SymmetricAlgorithmProvider(typeof(RijndaelManaged), stream, DataProtectionScope.CurrentUser, instrumentationProvider);

            totalSymmetricDecryptionPerformedCounter.Clear();
            totalSymmetricEncryptionPerformedCounter.Clear();
        }
        public void AESEncryptAndDecryptWithBadKey()
        {
            SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(key);

            byte[] plaintext  = new byte[] { 5, 4, 6, 2 };
            byte[] ciphertext = provider.Encrypt(plaintext);
            SymmetricAlgorithmProvider badProvider = new SymmetricAlgorithmProvider(new byte[] { 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 });

            try
            {
                byte[] plaintext2 = badProvider.Decrypt(ciphertext);
                Assert.IsFalse(CommonUtil.CompareBytes(plaintext, plaintext2));
            }
            catch (CryptographicException)
            {
            }
        }
예제 #10
0
        void CreateSymmetricAlgorithmProvider()
        {
            if (_SymmetricAlgorithmProvider != null)
            {
                return;
            }
            TechnicalException te;

            if (string.IsNullOrEmpty(keyFileName))
            {
                keyFileName = System.Configuration.ConfigurationManager.AppSettings["CrypKeyFile"];
            }
            if (string.IsNullOrEmpty(keyFileName))
            {
                te = new TechnicalException("La clave de encriptacion no puede ser nula");
                ExceptionHelper.SetTechnicalException <SymetriCypher <T> >(te);
                te.ErrorId = "4401";
                throw te;
            }

            if (!File.Exists(keyFileName))
            {
                te = new TechnicalException(string.Concat("La clave de encriptacion ", keyFileName, " no existe"));
                ExceptionHelper.SetTechnicalException <SymetriCypher <T> >(te);
                te.ErrorId = "4401";
                throw te;
            }
            try
            {
                if (_SymmetricAlgorithmProvider == null)
                {
                    _SymmetricAlgorithmProvider = new SymmetricAlgorithmProvider(typeof(T), keyFileName, DataProtectionScope.LocalMachine);
                }
            }
            catch (Exception e)
            {
                te = new TechnicalException("Error al intentar crear SymmetricAlgorithmProvider ", e);
                ExceptionHelper.SetTechnicalException <SymetriCypher <T> >(te);
                te.ErrorId = "4400";
                throw te;
            }
        }
예제 #11
0
        public static string Encriptar(string texto, out Object keysimetric)
        {
            string result = "";

            try
            {
                ProtectedKey key = KeyManager.GenerateSymmetricKey("System.Security.Cryptography.TripleDESCryptoServiceProvider", DataProtectionScope.LocalMachine);

                SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(typeof(TripleDESCryptoServiceProvider), key);
                result      = Convert.ToBase64String(provider.Encrypt(UnicodeEncoding.Unicode.GetBytes(texto.ToCharArray(), 0, texto.Length)));
                keysimetric = key;

                //string decryptedData = UnicodeEncoding.Unicode.GetString(provider.Decrypt(Convert.FromBase64String(result)));
                //var crypto = EnterpriseLibraryContainer.Current.GetInstance<CryptographyManager>();
                //result = crypto.EncryptSymmetric(GetSymmProvider(), texto);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
예제 #12
0
        public static string Desencriptar(string textoEncriptado)
        {
            string result = "";

            try
            {
                string       ruta = AppDomain.CurrentDomain.BaseDirectory + "\\" + ConfigurationManager.AppSettings["EntLibSymmProvider"];
                ProtectedKey key  = (ProtectedKey) new ManejadorArchivos().LeerKey(ruta);
                SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(typeof(TripleDESCryptoServiceProvider), key);

                result = UnicodeEncoding.Unicode.GetString(provider.Decrypt(Convert.FromBase64String(textoEncriptado)));

                //ModifProtectedKeyFilename();
                //var crypto = EnterpriseLibraryContainer.Current.GetInstance<CryptographyManager>();
                //string clavesimetrica = GetSymmProvider();
                //result = crypto.DecryptSymmetric(clavesimetrica, textoEncriptado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
        public void DecryptZeroBytes()
        {
            SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(key);

            provider.Decrypt(new byte[0]);
        }
        public void DecryptNullBytes()
        {
            SymmetricAlgorithmProvider provider = new SymmetricAlgorithmProvider(key);

            provider.Decrypt(null);
        }
예제 #15
0
 public void SetUp()
 {
     stream   = CreateSymmetricKey();
     provider = new SymmetricAlgorithmProvider(typeof(RijndaelManaged), stream, DataProtectionScope.CurrentUser);
 }
 public void SetUp()
 {
     stream = CreateSymmetricKey();
     provider = new SymmetricAlgorithmProvider(typeof(RijndaelManaged), stream, DataProtectionScope.CurrentUser);
 }