【问题标题】:Decoding the keys from RSACryptoServiceProvider从 RSACryptoServiceProvider 解码密钥
【发布时间】:2021-10-19 22:05:24
【问题描述】:

我正在尝试使用.ExportRSAPrivateKey()RSACryptoServiceProvider 对象中提取私钥。根据MSDN,它导出一个“包含此密钥的PKCS#1 RSAPrivateKey 表示的字节数组”,该表示在Appendix A of RFC8017 中定义。所以基于此,我假设它应该是 ASN1 编码并尝试使用 AsnReader 类:

using (var rsa = new RSACryptoServiceProvider(1024))
{
    var priv = rsa.ExportRSAPrivateKey();
    var asnr = new AsnReader(priv, AsnEncodingRules.DER);
    var N = asnr.ReadInteger();
}

但是,此代码在 .ReadInteger() 上失败,但异常:"The provided data is tagged with 'Universal' class value '16', but it should have been 'Universal' class value '2'."

我做错了什么?

【问题讨论】:

    标签: .net cryptography rsa .net-5 asn.1


    【解决方案1】:

    这是因为 RSAPublicKey 是一个 SEQUENCE ...

    所以你必须先读取一个序列,然后再读取整数...

    我猜你正在使用 Microsoft AsnReader

    所以,代码可能是这样的:

    var publicKey = asnr.ReadSequence()
    var N = publickKey.ReadInteger()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2023-03-24
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      相关资源
      最近更新 更多