gpt4 book ai didi

c# - 从字符串初始化 RSA

转载 作者:行者123 更新时间:2023-11-30 23:17:16 25 4
gpt4 key购买 nike

我正在尝试解密一些用 RSA 加密的文本,我有执行此操作的公钥

`

-----BEGIN RSA PUBLIC KEY-----
MIGWAoGBAMqfGO9sPz+kxaRh/qVKsZQGul7NdG1gonSS3KPXTjtcHTFfexA4MkGA
mwKeu9XeTRFgMMxX99WmyaFvNzuxSlCFI/foCkx0TZCFZjpKFHLXryxWrkG1Bl9+
+gKTvTJ4rWk1RvnxYhm3n/Rxo2NoJM/822Oo7YBZ5rmk8NuJU4HLAhAYcJLaZFTO
sYU+aRX4RmoF
-----END RSA PUBLIC KEY-----

`

我如何将其加载到 RSACryptoServiceProvider 中,因为它只能从 XMLString 加载并且我不知道如何将其转换为 Xml 格式

key 大小为128

我试着用下面的代码初始化它

public byte[] Decrypt128(byte[] input)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(128);
rsa.ImportCspBlob(Encoding.ASCII.GetBytes(_longKey));
return rsa.Decrypt(input, true);
}

_longKey 是 BEGIN 和 END 之间的内容,也包括 BEGIN 和 END,bot Bad Version of provider.

这不是 How do you convert Byte Array to Hexadecimal String, and vice versa? 的重复问题

我已经知道如何将字节转换为十六进制以及如何将十六进制转换为字节,但是这无论如何都不能帮助我初始化 RSACryptoServiceProvider 也许可以举个例子告诉我这有什么帮助,但在这一点上它没有帮助

最佳答案

你可以使用 BouncyCastle它有一个 PemReader 允许您提取 key 的模数和指数:

using (var reader = File.OpenText("mykey.key"))
{
var pem = new PemReader(reader);
var o = (RsaKeyParameters)pem.ReadObject();
using (var rsa = new RSACryptoServiceProvider())
{
var parameters = new RSAParameters();
parameters.Modulus = o.Modulus.ToByteArray();
parameters.Exponent = o.Exponent.ToByteArray();
rsa.ImportParameters(parameters);

// Do what you need to do with the RSACryptoServiceProvider instance
}
}

如果您不想在项目中依赖 BouncyCaSTLe,使用此方法将公钥加载到 RSACryptoServiceProvider 后,您可以将其导出为 XML 以供将来使用:

string xml = rsa.ToXmlString(false);
File.WriteAllText("mykey.xml", xml);

关于c# - 从字符串初始化 RSA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41530991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com