我正在尝试使用RSACryptoServiceProvider从.ExportRSAPrivateKey()对象中提取私钥。根据MSDN,它导出一个“包含此键的PKCS#1 RSAPrivateKey表示的字节数组”,该表示是在RFC8017附录A中定义的。因此,基于此,我假设它应该是an 1编码的,并尝试使用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'."
我做错了什么?
发布于 2021-08-18 05:19:57
因为RSAPublicKey是序列..。
所以你必须读取一个序列然后,整数..。
我想您正在使用Microsoft AsnReader类。
因此,代码可以是这样的:
var publicKey = asnr.ReadSequence()
var N = publickKey.ReadInteger()https://stackoverflow.com/questions/68826807
复制相似问题