我需要获取 DER 格式的 RSA 公钥字节,并将该 key 发送到 API。然后,该 API 将向我发送使用该公钥加密的内容,我需要对其进行解密。
第一个问题,C# 似乎没有能力以 DER 格式导出 RSA key 。所以看来我必须依赖像 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 就很满意了。但现在我一直在试图弄清楚如何解密我收到的数据。首先,我解码了 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
非常感谢James K Polk !
关于c# - 以 DER 格式导出 RSA 公钥并解密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52468125/