.net带有PSS填充的RSA签名数据错误

时间:2017-08-15 15:44:53

标签: c# .net cryptography sign rsacryptoserviceprovider

我有一个问题。在.net中使用Crypto如下。我有一个.pem文件,我可以解析为私钥,并希望签署一些数据字节。我使用的代码如下:

byte[] pemkey = Convert.FromBase64String(privateKeyString);

RSACryptoServiceProvider RSA = DecodeRSAPrivateKey(pemkey);//function to parse .pem file

byte[] fileBytes = File.ReadAllBytes(@"C:\...");

byte[] signature = RSA.SignData(fileBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);

运行它时,在最后一个语句(RSA.SignData)上,我遇到了异常,不处理CryptographicException:指定的填充模式对此算法无效。

我不确定我的代码中缺少什么,因为我在Google上的搜索没有返回太多结果。

感谢任何帮助。非常感谢

1 个答案:

答案 0 :(得分:2)

我从未见过使用RSACryptoServiceProvider的PSS填充,但我看到它与RSACng一起正常工作。您可以通过以下修改代码快速尝试:

byte[] pemkey = Convert.FromBase64String(privateKeyString);

RSACryptoServiceProvider RSA = DecodeRSAPrivateKey(pemkey);//function to parse .pem file

RSAParameters rsaParams = RSA.ExportParameters(true);
RSACng RSACng = new RSACng();
RSACng.ImportParameters(rsaParams);

byte[] fileBytes = File.ReadAllBytes(@"C:\...");

byte[] signature = RSACng.SignData(fileBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);