没有 ASN.1 编码的 C# RSA 签名



首先,我需要在 C# 代码中复制echo -n "someUnhashedData" | openssl pkeyutl -sign -inkey rsa.key | base64 -w 0功能。我设法将私钥加载到System.Security.Cryptography.RSACryptoServiceProvider并调用SignData,但我得到的结果与openssl pkeyutl不同。

据我了解,根据这篇文章和这个 RFC,当在没有-pkeyopt digest:hashFunc的情况下调用pkeyutl -signopenssl 不会将数据与摘要函数标识符捆绑在一起并跳过 ASN.1 编码。这意味着原始数据被填充和加密。此工具似乎确认,解密的签名看起来像填充的明文数据。

那么如何使用 C# 做到这一点呢?RSACryptoServiceProvider的所有函数都需要在加密之前指定哈希算法和编码签名。我是否缺少某些内容,或者我是否必须编写自己的 RSA 专用加密?

.NET没有用于执行"原始RSA"的收件箱API。 如果您需要该功能来匹配另一个 RSA 使用者中的现有错误,则必须创建一个新类,该类向下调用到系统加密库(或以其他方式提供您寻求的功能(

最新更新