3

我已经获得了 RSA 参数的 M、Exponent 和 D 组件,并且一直在尝试在 C#.NET 中使用它来加密数据。我想知道作为公钥的一部分,这些组件中的哪些是加密数据所必需的?此外,以 16 为底的指数为 10001。我应该在 C# 中设置什么 RsaParameters.Exponent 参数?我不知道我应该如何准确地解释该数字并将其放在 Exponent 中,这是一个字节数组。组件不需要以 16 为基数的长度均匀吗?

谢谢。

4

2 回答 2

4
RSAParameters rsaKeyInfo = new RSAParameters
{
   Exponent = new byte[] {1, 0, 1},
   ...
};

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
    rsa.ImportParameters(rsaKeyInfo);
    rsa.Decrypt(...)
}
于 2013-01-30T20:05:37.570 回答
2

这是一个代码示例 因此,您应该将指数设置为数字 65537 的字节表示(以 16 为基数的 10001)。我不太确定它是如何工作的RSACryptoServiceProvider,但如果您使用的是 OpenSSL,这BitConverter.GetBytes(65537)是一个坏主意,因为它是{1, 0, 1, 0},但不是{1, 0, 1},它不能正常工作。因此,我认为最好以 MSDN 示例中所写的方式保留它:

byte[] Exponent = {1,0,1};
于 2012-06-17T01:22:07.663 回答