首先,我需要在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 post和this RFC都不会将数据与摘要功能标识符捆绑在一起,并跳过ASN.1编码。这意味着原始数据将被填充和加密。 This tool似乎证实了,解密的签名看起来像是填充的纯文本数据。
那么我该如何使用C#? RSACryptoServiceProvider
中的所有函数都需要指定哈希算法并在加密之前对签名进行编码。我是否缺少某些东西,或者我必须编写自己的RSA私有加密?
答案 0 :(得分:0)
.NET没有用于执行“原始RSA”的收件箱API。如果您需要与其他RSA使用者中的现有错误相匹配的功能,则必须创建一个新类,将P / Invokes到系统密码库(或提供您所寻求的功能)