Amido.PreProcessor.Cmd.MD5.Decrypt C# (CSharp) Method

Decrypt() private method

private Decrypt ( string value ) : string
value string
return string
        internal string Decrypt(string value)
        {
            MD5CryptoServiceProvider hashProvider = null;
            TripleDESCryptoServiceProvider provider = null;

            try
            {
                hashProvider = new MD5CryptoServiceProvider();
                var hashPassPhrase = hashProvider.ComputeHash(Encoding.UTF8.GetBytes(passPhrase));

                provider = new TripleDESCryptoServiceProvider();
                provider.Key = hashPassPhrase;
                provider.Mode = CipherMode.ECB;
                provider.Padding = PaddingMode.PKCS7;

                var dataToEncrypt = Convert.FromBase64String(value);
                var decryptor = provider.CreateDecryptor();
                var results = decryptor.TransformFinalBlock(dataToEncrypt, 0, dataToEncrypt.Length);
                return Encoding.UTF8.GetString(results);

            }
            finally
            {
                if (provider != null) provider.Clear();
                if (hashProvider != null) hashProvider.Clear();
            }
        }
    }

Usage Example

        private IDictionary<string, string> LoadDictionary(PreProcessorConfig config)
        {
            const string passPhrase = "0B5DCD38C9F34C96AA57393EF2492E84";
            var md5 = new MD5(passPhrase);
            IDictionary<string, string> dictionary = new Dictionary<string, string>();

            foreach (var item in config.Properties)
            {
                if (dictionary.ContainsKey(item.Name))
                {
                    throw new InvalidOperationException(
                        string.Format("Dictionary already contains property key {0}.", item.Name));
                }

                if (item.EncryptedSpecified && item.Encrypted)
                {
                    log.Info(string.Format("Decrypting value '{0}'...", item.Value));
                    var value = md5.Decrypt(item.Value);
                    dictionary.Add(item.Name, value);
                    log.Info(string.Format("Decrypted value is '{0}'.", value));
                }
                else
                {
                    dictionary.Add(item.Name, item.Value);
                }
            }

            return dictionary;
        }