【问题标题】:Export RSA Public Key in DER Format and decrypt data以DER格式导出RSA公钥并解密数据
【发布时间】:2019-02-27 07:17:25
【问题描述】:

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

第一个问题,C# 似乎无法以 DER 格式导出 RSA 密钥。所以看来我必须依赖像 BouncyCastle 这样的 3rd 方包。我还找到了一种使用此包以 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 很高兴。但现在我一直在试图弄清楚如何解密我收到的数据。首先我解码了base64字符串,现在我被数据的字节所困扰。我可以从 BouncyCastle“东西”获取私钥,但我似乎无法正确将其转换为 RsaCryptoServiceProvider,而且 BouncyCastle 文档有点奇怪。 如果有人有想法或其他方法,我会非常高兴。

【问题讨论】:

  • 看看Org.BouncyCastle.Security.DotNetUtilities中的方法。

标签: c# rsa bouncycastle der


【解决方案1】:

基于 cmets 我想出了这个解决方案:

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

非常感谢James K Polk

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2015-03-19
    • 2011-03-08
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多