我走了创建自己的reserve()
的道路,如果文件尚未加密,它会对文件进行加密,并且还可以对其进行解密。
我现在正在努力想出一种方法,以与ConfigurationProvider
类似的方式将解密的appsettings.json内容(解密字符串)添加到配置中。
最后,我希望能够在.AddJsonFile()
中调用.AddEncryptedJson("appsettings.json")
,这会解密文件并添加所有必要的配置。
Startup.cs
答案 0 :(得分:1)
您可以通过查看aspnet / Configuration存储库中的内部JsonConfigurationFileParser
类here来解决此问题。
通过在项目中创建类似的类,您将能够成功解析解密的JSON字符串。
要使用解析器,只需将jsonString
作为Stream
提供给其Parse()
方法即可。您的UnencryptMyConfiguration()
方法将如下所示:
private IDictionary<string, string> UnencryptMyConfiguration()
{
EncryptIfNotEncrypted();
var configFileBytes = File.ReadAllBytes(_filePath);
var decryptedData = _privKey.Decrypt(configFileBytes, RSAEncryptionPadding.Pkcs1);
var jsonString = Encoding.UTF8.GetString(decryptedData);
//treat the decrypted string as a Stream to let JsonConfigurationFileParser handle it
using (MemoryStream stream = new MemoryStream())
{
var parser = new JsonConfigurationFileParser();
StreamWriter writer = new StreamWriter(stream);
writer.Write(jsonString);
writer.Flush();
stream.Position = 0;
return parser.Parse(stream);
};
}