我在使用 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 key 和大小为 64 字节的数据 block 。调用上述方法时出现错误:
Data too large for modulus
但是,如果我使用大小为 64 字节的数据 block ,其中所有字节都设置为 0x00,则该方法可以正常工作。
有什么我想念的吗?
谢谢。
最佳答案
我终于解决了这个问题。对于任何其他感兴趣的人,数据 block 的最低有效字节的值必须为 0x00。通过强制执行此条件,RSA 加密和解密就像一个魅力。
关于C# OpenSSL RSA私钥加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742229/