C# 加密appConfig配置c部分的一部分#

C# 加密appConfig配置c部分的一部分#,c#,.net,encryption,app-config,C#,.net,Encryption,App Config,我有自定义配置部分与服务器设置,其中包括:用户名,密码和服务器的IP;我需要使用以下类型获取加密配置: <ApplicationServerConfiguration> <Server UserName="ASDASDASDASDAS [Some encrypted value] ASDASDASF"/> <Server Password="ASDASDASDASDAS [Some encrypted value] ASDASDASF"/> <

我有自定义配置部分与服务器设置,其中包括:用户名,密码和服务器的IP;我需要使用以下类型获取加密配置:

<ApplicationServerConfiguration>
  <Server UserName="ASDASDASDASDAS [Some encrypted value] ASDASDASF"/>
  <Server Password="ASDASDASDASDAS [Some encrypted value] ASDASDASF"/>
  <Server ServerAddress="192.168.255.255"/> **Not encrypted value!**
</ApplicationServerConfiguration>

**不是加密值**

我可以加密整个配置部分,但不能加密其中的一部分。谁知道如何只加密configSection的一部分?

App.config根本不是存储安全凭据的好地方

App.config根本不是存储安全凭据的好地方

不可能只加密节的一部分。如果您想对用户名和密码值进行加密,则必须将其放入单独的部分。

不可能只加密部分内容。如果您希望能够对用户名和密码值进行加密,则必须将它们放在单独的部分。

您可以手动对它们进行加密和解密

    private static string EncryptString(string Value)
    {
        string ReturnValue = string.Empty;

        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes("Bermuda"));

        using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
        {
            provider.Key = TDESKey;
            provider.Mode = CipherMode.ECB;
            provider.Padding = PaddingMode.PKCS7;

            ICryptoTransform Encryptor = provider.CreateEncryptor();
            byte[] ByteValue = ASCIIEncoding.ASCII.GetBytes(Value);

            ReturnValue = Convert.ToBase64String(Encryptor.TransformFinalBlock(ByteValue, 0, ByteValue.Length));
        }

        return ReturnValue;
    }
    private static string DecryptString(string EncryptedValue)
    {
        string ReturnValue = string.Empty;

        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes("Bermuda"));

        using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
        {
            provider.Key = TDESKey;
            provider.Mode = CipherMode.ECB;
            provider.Padding = PaddingMode.PKCS7;

            ICryptoTransform Decryptor = provider.CreateDecryptor();
            byte[] ByteValue = Convert.FromBase64String(EncryptedValue);

            ReturnValue = ASCIIEncoding.ASCII.GetString(Decryptor.TransformFinalBlock(ByteValue, 0, ByteValue.Length));
        }

        return ReturnValue;
    }

您可以手动加密和解密它们

    private static string EncryptString(string Value)
    {
        string ReturnValue = string.Empty;

        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes("Bermuda"));

        using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
        {
            provider.Key = TDESKey;
            provider.Mode = CipherMode.ECB;
            provider.Padding = PaddingMode.PKCS7;

            ICryptoTransform Encryptor = provider.CreateEncryptor();
            byte[] ByteValue = ASCIIEncoding.ASCII.GetBytes(Value);

            ReturnValue = Convert.ToBase64String(Encryptor.TransformFinalBlock(ByteValue, 0, ByteValue.Length));
        }

        return ReturnValue;
    }
    private static string DecryptString(string EncryptedValue)
    {
        string ReturnValue = string.Empty;

        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(ASCIIEncoding.ASCII.GetBytes("Bermuda"));

        using (TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider())
        {
            provider.Key = TDESKey;
            provider.Mode = CipherMode.ECB;
            provider.Padding = PaddingMode.PKCS7;

            ICryptoTransform Decryptor = provider.CreateDecryptor();
            byte[] ByteValue = Convert.FromBase64String(EncryptedValue);

            ReturnValue = ASCIIEncoding.ASCII.GetString(Decryptor.TransformFinalBlock(ByteValue, 0, ByteValue.Length));
        }

        return ReturnValue;
    }

为什么不呢?连接字符串凭据呢?您建议将它们存放在哪里?为什么不?连接字符串凭据呢?您建议将它们存放在哪里?