In meiner Konfigurationsdatei habe ich einige vertrauliche Informationen, die ich für mehr Sicherheit verschlüsseln wollte.So verschlüsseln/entschlüsseln Sie einen Konfigurationsdateiabschnitt mit RsaProtectedConfigurationProvider
Dies ist mein Code (wie erwartet):
class Program
{
static void Main(string[] args)
{
System.Configuration.ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"D:\Web_S\Prep\test\test.exe.config";
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
string userNameWithoutEncryption = configuration.AppSettings.Settings["username"].Value;
EncryptAppSettings("appSettings", configuration);
}
protected static void EncryptAppSettings(string section, Configuration configuration)
{
AppSettingsSection objAppsettings = (AppSettingsSection)configuration.GetSection(section);
objAppsettings.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
objAppsettings.SectionInformation.ForceSave = true;
configuration.Save(ConfigurationSaveMode.Modified);
}
}
.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="username" value="a2zmenu"/>
<add key="password" value="password"/>
</appSettings>
</configuration>
Die .config verschlüsselt sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="customAppSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>09+Lm23xDWWnAZFOagh3NRwp5tzad+3oedvTgoeWqunQBiAfk9UGfGxriZg6snwwANUDzOANZ+wOFUb6qa0Atf
NgSd6b4FFSKTqzkfLlk+S9GtPSAVrRaLU9
/Q2Qu7oxoSbhW7NWtengJbEZrFm+GqlLlm08w8Np/y03DMExFeA=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>qSYRXNEKhbwNodH60c7qoWeKZ2QKVQmizPXVGCgHVZPMQ4F+XDqlZa2OyIin0kEI3j8pCjNL097RlZClgdd
gPEd61AEw6DXJc43Z98obNFHmXfK9aS67qEtO6E
T+qCWQq2ZRbfK6xZ6jlfeink35/veUmoxAmDXrkwdrbQVKv98=</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
</configuration>
Ich habe die folgende Fragen: Ist es sicher, informatio zu lassen ns wie
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
in der .config?
Ist es nicht möglich, es mit diesen Informationen zu entschlüsseln? Nachdem die Datei verschlüsselt ist, kann bestätigen, dass Sie ich diese Zeile kommentieren:
EncryptAppSettings("appSettings", configuration);
Wenn ich versuche, den Benutzernamen Wert zu erhalten, nachdem die Datei mit dieser Linie verschlüsselt ist:
string userNameafterEncryption = configuration.AppSettings.Settings["username"].Value;
i erhalten die entschlüsselter Wert, selbst wenn meine Datei jetzt verschlüsselt ist. Ich verstehe nicht, warum ...
Danke für Ihre Hilfe
Vielen Dank, dass Sie sich die Zeit genommen haben, diese Erklärungen zu schreiben. Ich werde deine Antwort akzeptieren, wenn ich kann (muss ein wenig warten) – FieryA