如何在RSA参数中设置公钥

3

我有一个以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;
    }

我想它没有正常工作,因为我总是从我正在集成的系统中得到错误响应。

导入公钥的方式正确吗? 如果不正确,我该怎么做?

1个回答

4
你所拥有的公钥可能是以PKCS#1格式编码的,这是RSA公钥编码的常见标准。
.NET加密类无法直接理解这种格式,因此您需要自己解析ASN.1编码,从您的密钥中获取模数和公共指数,并设置相应的参数到您的RSAParameters对象中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接