【问题标题】:How to set public key in RSAParameters [duplicate]如何在 RSAParameters 中设置公钥 [重复]
【发布时间】: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;
    }

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

导入公钥是否正确? 如果不是我应该怎么做?

【问题讨论】:

    标签: c# cryptography rsa rsacryptoserviceprovider


    【解决方案1】:

    您拥有的公钥大概以PKCS#1 格式编码,这是编码 RSA 公钥的通用标准。

    .NET 加密类不直接理解这种格式,您必须自己解析 ASN.1 编码才能从您的密钥中获取 moduluspublic exponent并为您的 RSAParameters 对象设置相应的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 2015-07-07
      • 2010-09-05
      • 2016-09-20
      • 2013-07-15
      相关资源
      最近更新 更多