C# OpenSSL RSA 私钥加密

3
我正在使用OpenSSL库的.Net封装程序计算一组字节的RSA私钥加密时遇到一些问题。
目前,我将包含要使用的私钥的.pem文件读入到BIO对象中。
public byte[] ComputeRSAEncryption(byte[] dataBlock, BIO privateKey)
{
   RSA rsa = RSA.FromPrivateKey(privateKey);
   return rsa.PrivateEncryption(dataBlock, RSA.Padding.None);
}

我正在使用64字节的RSA密钥和64字节的数据块大小。当调用以上方法时,我收到以下错误消息:

数据超过模数限制

然而,如果我使用一个所有字节都设置为0x00的64字节数据块,该方法就可以正常运行,没有错误。

我是否忽略了什么?

谢谢。


仅仅因为模数是64字节,并不意味着你的数据可以是64字节。实际上,模数是一个整数,而数据作为一个整数必须小于模数。PKCS#1填充总是强制数据的高位字节为零,以确保这个条件。 - President James K. Polk
1个回答

4
我终于解决了这个问题。对于其他有兴趣的人来说,数据块的最低有效字节必须为0x00。通过强制执行此条件,RSA加密和解密像魔术般地工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接