如何在 RSAParameters 中设置 public 键
How to set public key in RSAParameters
我有使用 Base64 编码的 RSA public 密钥。
解码后我可以获得 RSA public 密钥,如:
-----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;
}
我想它没有正常工作,因为我总是从我正在集成的系统收到错误响应。
导入public密钥的方法正确吗?
如果不行怎么办?
您拥有的 public 密钥可能以 PKCS#1 格式编码,这是编码 RSA public 密钥的通用标准。
.NET crypto 类 不直接理解这种格式,您将不得不自己解析 ASN.1 编码以获得 模数 和 public exponent 从你的密钥中设置你的 RSAParameters 对象的相应参数。
我有使用 Base64 编码的 RSA public 密钥。 解码后我可以获得 RSA public 密钥,如:
-----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;
}
我想它没有正常工作,因为我总是从我正在集成的系统收到错误响应。
导入public密钥的方法正确吗? 如果不行怎么办?
您拥有的 public 密钥可能以 PKCS#1 格式编码,这是编码 RSA public 密钥的通用标准。
.NET crypto 类 不直接理解这种格式,您将不得不自己解析 ASN.1 编码以获得 模数 和 public exponent 从你的密钥中设置你的 RSAParameters 对象的相应参数。