如何在 RSAParameters 中设置公钥 [重复]
Posted
技术标签:
【中文标题】如何在 RSAParameters 中设置公钥 [重复]【英文标题】:How to set public key in RSAParameters [duplicate] 【发布时间】:2017-07-06 07:56:17 【问题描述】:我有用 Base64 编码的 RSA 公钥。 解码后我可以得到 RSA 公钥:
-----BEGIN PUBLIC KEY----- XXXXXXXXXXXXXXXXXXXXXXX -----结束公钥-----
现在我需要将此密钥导入 RSACryptoServiceProvider。 我正在寻找解决方案,但找不到任何可行的方法。 从我找到的片段中,我创建了这样的代码示例
public static string Encrypt(string input, string base64PublicKey)
var rsa = new RSACryptoServiceProvider();
var byteKey = System.Convert.FromBase64String(base64PublicKey);
var byteInput = Encoding.UTF8.GetBytes(input);
var parameters = rsa.ExportParameters(false);
parameters.Modulus = byteKey;
rsa.ImportParameters(parameters);
var bytesEncrypted = rsa.Encrypt(byteInput, false);
var result = System.Convert.ToBase64String(bytesEncrypted);
return result;
我想它不能正常工作,因为我总是从我正在集成的系统中得到错误响应。
导入公钥是否正确? 如果不是我应该怎么做?
【问题讨论】:
【参考方案1】:您拥有的公钥大概以PKCS#1 格式编码,这是编码 RSA 公钥的通用标准。
.NET 加密类不直接理解这种格式,您必须自己解析 ASN.1 编码才能从您的密钥中获取 modulus 和 public exponent并为您的 RSAParameters 对象设置相应的参数。
【讨论】:
以上是关于如何在 RSAParameters 中设置公钥 [重复]的主要内容,如果未能解决你的问题,请参考以下文章