2017-07-06 113 views
0

我有用Base64编码的RSA公钥。 解码我可以得到RSA公钥后,如:如何在RSAParameters中设置公钥

----- 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; 
    } 

我想这是不正常,因为我总是得到响应从我与集成系统错误。

这是导入公钥的正确方法吗? 如果不是我应该怎么做?

回答

1

您拥有的公钥可能编码为PKCS#1格式,这是用于编码RSA公钥的通用标准。

的.NET加密类不直接了解这种格式,你将不得不解析编码自己从你的钥匙拿到公共指数并设置相应的参数OUF您RSAParameters的ASN.1对象。