【发布时间】:2020-01-23 06:17:03
【问题描述】:
我能够使用带有 Encoding.UTF8 和 RSACryptoServiceProvider() 的 RSA 公钥加密连接字符串。
但是当我试图解密它时,我正面临着
"System.InvalidOperationException: XML 文档 (1, 2) 中存在错误。 ---> System.InvalidOperationException:不是预期的。”
"ConnectionStrings": {
"ConnectionString": "JLR+q4Bf3HyHpmby2gBI/bQi2C3Oqun+4lemvsBxeXU6YjHnNvdq0q54gf4VVbHDDkx5a57cGNgsSkYWP5uzJtsmdLQnJU5kA4yRSdaKbUdxE1aVDJMcJneVsNo73CSGhXQcK9zN8ILZeD/a51bA9ap00vWfx4v/nvCTZe3s26g="
};
public class HomeController : ControllerBase
{
private ConnectionStrings connectionStrings { get; set; }
public HomeController(IOptions<ConnectionStrings> settings)
{
connectionStrings = settings.Value;
}
public string Get()
{
string data = connectionStrings.ConnectionString;
string path = @"C:\temp\privateKey.xml";
var privateKey = System.IO.File.ReadAllText(path);
var bytesCypherText = Convert.FromBase64String(data);
var csp = new RSACryptoServiceProvider();
var sr = new System.IO.StringReader(privateKey);
XmlSerializer xs = new XmlSerializer(typeof(RSAParameters));
var privKey = (RSAParameters)xs.Deserialize(sr); // says error with the XML
csp.ImportParameters(privKey);
var plaintext = csp.Decrypt(bytesCypherText, false);
return Encoding.Unicode.GetString(plaintext);
}
}
我正在使用 .NET CORE 框架,我遇到了很多 stackoverflow 线程,并且知道我们可以通过配置生成器来完成它,但我很难找到如何去做。
我是.Net平台的初学者,所以请验证以上细节并帮助我获取解密文本。
【问题讨论】:
-
为什么要对连接字符串进行 RSA 加密?这有点令人担忧。
-
需求从何而来? (你没有提到有这样的要求。)
-
这是我们项目计划的一部分,我们正在使用 RSA
-
这里应该使用 RSA 来完成什么?
-
为了完整起见:
FromXmlString/ToXmlString从 .NET Core 3.0 开始支持 (3.0, 3.1),here。在PlatformNotSupportedException下方抛出。 IE。csp.FromXmlString(privateKey);也可以解决问题(假设对应的 .NET Core 版本)。
标签: c# asp.net-core encryption rsa rsacryptoserviceprovider