C#中的RSASSA-PSS

时间:2014-06-17 12:07:19

标签: c# rsa digital-signature

有谁知道RSACryptoServiceProvider.SignHash使用了哪种签名算法?我相信它是RSAPKCS1,还是安全吗?

有没有人想过将RSASSA-PSS配置为RSACryptoServiceProvider的签名算法而不使用像BouncyCastle这样的第三方库?

提前致谢。

1 个答案:

答案 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);
}