有谁知道RSACryptoServiceProvider.SignHash使用了哪种签名算法?我相信它是RSAPKCS1,还是安全吗?
有没有人想过将RSASSA-PSS配置为RSACryptoServiceProvider的签名算法而不使用像BouncyCastle这样的第三方库?
提前致谢。
答案 0 :(得分:1)
RSACryptoServiceProvider
只能进行PKCS-1签名。
在.NET 4.6中,在RSA基类上添加了一组新方法,这些方法添加了RSASignaturePadding
参数。 RSACng
类可以通过RSASignaturePadding.Pss
值进行RSASSA-PSS(带有MGF-1的PSS,MGF摘要和PSS摘要都是消息摘要,盐大小是摘要大小)。
.NET 4.6还为从证书中获取密钥增加了更好的类型安全性,新方法很可能会返回RSACng:
using (RSA privateKey = cert.GetRSAPrivateKey())
{
return privateKey.SignHash(hash, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
}