以 DER 格式导出 RSA 公钥并解密数据



我需要以DER格式获取RSA公钥的字节,并将此密钥发送到API。然后,此 API 将向我发送使用此公钥加密的内容,我需要对其进行解密。

第一个问题,C# 似乎无法导出 DER 格式的 RSA 密钥。因此,我似乎必须依靠像BouncyCastle这样的第三方软件包。我还找到了一种使用此软件包以 DER 格式生成和导出公钥的方法:

var generator = new RsaKeyPairGenerator();
generator.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
var keyPair = generator.GenerateKeyPair();
var publicKeyParam = (RsaKeyParameters)keyPair.Public;
var publicKey = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKeyParam).GetDerEncoded();

所以现在我只需要对这些字节进行 Base64 编码并将其发送到 API,API 就很高兴了。但是现在我被困在试图弄清楚如何解密我收到的 dat 时。首先,我解码了base64字符串,现在我被数据的字节所困扰。我可以从BouncyCastle"东西"中获取私钥,但我似乎无法将其正确转换为RsaCryptoServiceProvider,并且BouncyCastle文档有点奇怪。 如果有人有想法或其他方法,我将非常高兴。

根据评论,我想出了这个解决方案:

var rsa = new RSACryptoServiceProvider(2048); // my rsa to decrypt and encrypt data
var publicKeyParam = DotNetUtilities.GetRsaPublicKey(rsa.ExportParameters(false));
var publicKey = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKeyParam).GetDerEncoded(); // my exported public key in DER format

非常感谢詹姆斯·波尔克!

最新更新