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.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/

相关文章:

javascript - 在 C# 方法中将 json 对象作为参数传递

c# - 如何使用 Windows.Storage API 创建路径?

c# - 从 C# 执行多个命令提示符命令

linux - 如何在centos中卸载RPM而不出现依赖错误?

javascript - 从 Cryptico.js 中提取 RSA 私钥

encryption - 为什么 WebCryptoAPI RSA-OAEP 加密函数无法使用给定 key 大小的预期最大块大小?

C# MySQL 系统不工作

c# - WPF Prism (MVVM) 中的全局热键/快捷方式管理器

php - 如何使用 TripleDES 加密与 Node.js 和 PHP-mcrypt 获得相同的结果?

java - 为什么 KeyPairGenerator.genKeyPair() 这么慢