我在Base64中编码了RSA公钥。 解码后,我可以获得RSA公钥,如:
----- BEGIN PUBLIC KEY ----- XXXXXXXXXXXXXXXXXXXXXXX ----- END PUBLIC KEY -----
现在我需要将此密钥导入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;
}
我认为它无法正常工作,因为我总是从我正在集成的系统中得到错误的响应。
导入公钥是否正确? 如果不是我应该怎么做?
答案 0 :(得分:1)
您拥有的公钥可能以PKCS#1格式编码,这是编码RSA公钥的通用标准。
.NET加密类不直接理解这种格式,您必须自己解析ASN.1编码才能从密钥中获取模数和公共指数并设置 RSAParameters 对象的相应参数。