我有服务器设置的自定义配置节,包括:服务器的用户名、密码和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,但不能加密一部分。谁知道如何只加密configSection的一部分?
发布于 2011-11-16 21:23:50
不可能只加密部分区段。如果您希望能够对UserName和Password值进行加密,则必须将它们放入单独的部分。
发布于 2011-11-16 21:28:06
您可以手动对它们进行加密和解密
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;
}发布于 2011-11-16 21:22:39
App.config根本不是存储安全凭证的好地方!
https://stackoverflow.com/questions/8152328
复制相似问题