C#OpenSSL RSA私钥加密

C#OpenSSL RSA私钥加密,c#,openssl,rsa,C#,Openssl,Rsa,我在使用OpenSSL库的.Net包装器计算一组字节的RSA私钥加密时遇到了一些问题 目前,我读取了一个.pem文件,其中包含我想在BIO对象中使用的私钥 public byte[] ComputeRSAEncryption(byte[] dataBlock, BIO privateKey) { RSA rsa = RSA.FromPrivateKey(privateKey); return rsa.PrivateEncryption(dataBlock, RSA.Padding.N

我在使用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字节的数据块。调用上述方法时,我得到错误:

数据对于模数来说太大

但是,如果我使用大小为64字节的数据块,其中所有字节都设置为0x00,则该方法不会出错

有什么我遗漏的吗


谢谢。

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

模数为64字节并不意味着数据可以是64字节。模数实际上是一个整数,作为整数的数据必须小于模数。PKCS#1填充始终强制数据的高阶字节为零,以确保满足此条件。