私钥错误参数不正确

parameter incorrect in private key error

我在单独的文件中有私钥和 public 密钥。

说明中说使用此代码:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

rsa.FromXmlString(PrivateKey);

但是当代码到达第二行时我得到这个错误:

'System.Security.Cryptography.CryptographicException' 类型的未处理异常发生在 mscorlib.dll

附加信息:参数不正确。

有什么问题?

在我们获得密钥的公司的示例代码中,它使用示例 peivate 和 public 密钥,如下所示:

<RSAKeyValue><Modulus>KEY VALUE</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

即使我加入 <RSAKeyValue><Modulus> 开始并且 </Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

到最后,没用

我使用这个网站将我的密钥从纯字符串转换为 xml:

https://superdry.apphb.com/tools/online-rsa-key-converter

因为 .Net 需要 xml 格式的密钥

最可能的原因是您的私钥没有所有的 D、P、Q、DP、DQ、InverseQ 值。

下一个最可能的原因是您的 D,以 byte[] 形式,不如 Modulus(以 byte[] 形式)长。同样,P/Q/DP/DQ/InverseQ 都需要将其 byte[] 形式作为模数长度的一半(向上舍入)。

XML 格式中的某些键不正确。最可靠的方法是自己构建RSAParameters结构并调用ImportParameters。原因之一:XML 方法在 .NET Core 中根本不可用,但 ImportParameters 可用。