[英]C# RSA signing without ASN.1 encoding
首先,我需要复制echo -n "someUnhashedData" | openssl pkeyutl -sign -inkey rsa.key | base64 -w 0
echo -n "someUnhashedData" | openssl pkeyutl -sign -inkey rsa.key | base64 -w 0
C#代码中的echo -n "someUnhashedData" | openssl pkeyutl -sign -inkey rsa.key | base64 -w 0
功能。 我设法将私钥加载到System.Security.Cryptography.RSACryptoServiceProvider
并调用SignData
,但是我得到的结果与openssl pkeyutl
的结果不同。
据我明白,每此篇和这个RFC时pkeyutl -sign
被不带-pkeyopt digest:hashFunc
OpenSSL的不捆绑与消化功能标识符数据,并跳过ASN.1编码。 这意味着原始数据将被填充和加密。 该工具似乎可以确认解密后的签名看起来像是填充的纯文本数据。
那么如何使用C#做到这一点呢? RSACryptoServiceProvider
所有功能都要求在加密之前指定哈希算法并编码签名。 我是否缺少某些东西,还是必须编写自己的RSA私有加密?
.NET没有执行“原始RSA”的收件箱API。 如果您需要与其他RSA使用者中的现有错误相匹配的功能,则必须创建一个新类,将P / Invokes到系统密码库中(或以其他方式提供您想要的功能)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.