我有一个需要 RSA 加密/解密的功能。使用提供的 .pem 文件,其中包含 RSA 的配对密钥。通过使用 Org.BouncyCastle 与How to read a PEM RSA private key from .NET相同;或使用http://www.jensign.com/opensslkey/opensslkey.cs中的方法。我收到的是带有参数 DQ 的“坏数据”有 63 个字节(不同于 64 个字节)。(据说.pem文件没问题。)这里有什么问题吗?
问问题
905 次
1 回答
2
所有 RSA 参数都是简单的(巨大的)数字。它们中的大多数将具有相同的大小(对于相同的密钥对长度,例如 1024),但情况并非总是如此 - 您需要在代码中涵盖这一点。
为什么 ?因为有些数字会更小一些,并且比其他数字更适合更少的位数。在您的情况下,该数字适合 63 个字节,因此它是 base64 (PEM) 编码的。
解决方案是填充您正在读取的数据,即在您正在解码的 63 之前添加一个 0x00 字节。这仍然是相同的数字(数学方面),它将通过 RSA 密钥参数的所有 .NET 验证。
ps 您可以查看 Mono 源代码以了解如何处理。
于 2011-07-25T21:17:21.320 回答