我已经获得了M,Exponent和D组件以及RSA参数,并且一直在尝试使用它在C#.NET中加密数据。我想知道公钥的哪些部分需要加密数据?此外,指数在基数16中为10001.我应该在C#中设置RsaParameters.Exponent参数?我不知道我应该如何解释这个数字并将它放在Exponent中,这是一个字节数组。组件是否需要在底座16中具有均匀的长度?
感谢。
答案 0 :(得分:3)
RSAParameters rsaKeyInfo = new RSAParameters
{
Exponent = new byte[] {1, 0, 1},
...
};
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(rsaKeyInfo);
rsa.Decrypt(...)
}
答案 1 :(得分:2)
这是sample of code
因此,您应将Exponent设置为数字65537的字节表示形式(基数为16的10001)。
我不太确定它在RSACryptoServiceProvider
中是如何工作的,但是如果你使用的是OpenSSL,则BitConverter.GetBytes(65537)
是一个坏主意,因为它是{1, 0, 1, 0}
,而不是{1, 0, 1}
它无法正常工作。所以,我认为最好以MSDN的例子中的方式保留它:
byte[] Exponent = {1,0,1};