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

时间:2018-07-04 12:25:12

标签: c# openssl rsa signing

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

据我了解,在没有pkeyutl -sign的情况下调用-pkeyopt digest:hashFunc时,每this postthis RFC都不会将数据与摘要功能标识符捆绑在一起,并跳过ASN.1编码。这意味着原始数据将被填充和加密。 This tool似乎证实了,解密的签名看起来像是填充的纯文本数据。

那么我该如何使用C#? RSACryptoServiceProvider中的所有函数都需要指定哈希算法并在加密之前对签名进行编码。我是否缺少某些东西,或者我必须编写自己的RSA私有加密?

1 个答案:

答案 0 :(得分:0)

.NET没有用于执行“原始RSA”的收件箱API。如果您需要与其他RSA使用者中的现有错误相匹配的功能,则必须创建一个新类,将P / Invokes到系统密码库(或提供您所寻求的功能)