2017-10-04 12 views
1

J'ai fait beaucoup de lecture et j'essaie de crypter une section dans un fichier WPF App.Config. Je n'utilise pas la section par défaut, mais plutôt une section personnalisée. J'ai une application où l'utilisateur spécifie un fichier .config et l'application lit ce fichier afin de mettre à jour les clés.Cryptage Section App.Config et déploiement sur plusieurs machines

Afin de décrypter et crypter ma section de fichier que je suis en utilisant le code suivant:

var configMap = new ExeConfigurationFileMap { ExeConfigFilename = this.FileName }; 
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
var configSection = config.GetSection(Section); 

if (!configSection.SectionInformation.IsProtected) 
    if (!configSection.ElementInformation.IsLocked) 
    { 
      configSection.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); 
      configSection.SectionInformation.ForceSave = true; 
      config.Save(ConfigurationSaveMode.Full); 
    } 

et Décrypter:

var configMap = new ExeConfigurationFileMap { ExeConfigFilename = this.FileName }; 
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
var configSection = config.GetSection(Section); 

if (configSection.SectionInformation.IsProtected) 
{ 
    configSection.SectionInformation.UnprotectSection(); 
    configSection.SectionInformation.ForceSave = true; 
    config.Save(ConfigurationSaveMode.Full); 
} 

Le problème que je suis confronté est que si j'ai un fichier qui est crypté sur la machine A et je place le fichier sur la machine B, je ne peux pas déchiffrer le fichier .config parce que le cryptage a été fait sur la machine A.

J'ai essayé de suivre les étapes de plusieurs articles qui recommandent d'utiliser aspnet_regiis pour créer et exporter des conteneurs clés (link) et (link) mais peut-être que je fais quelque chose de mal. Je suppose que parce que je n'utilise pas aspnet_regiis pour crypter le fichier ou pour déchiffrer le fichier, je suis bloqué. Y at-il un moyen de le faire sans utiliser l'outil aspnet_regiis et la ligne de commande?

Une grande partie de l'information est plus pour web.config vs app.config. Encore une fois, ceci est pour une application C#/WPF utilisant MVVM.

Je cherchais aussi un cryptage personnalisé (fournisseur de données personnalisé), mais tous les exemples que j'ai vus sont pour web.config (link).

Répondre