.net RSA 符号数据错误与 PSS 填充

.net RSA sign data error with PSS padding

我有一个问题。 Crypto 在 .net 中的使用如下。我有一个 .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 is not handled: Specified padding mode is not valid for this algorithm .

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

感谢任何帮助。非常感谢

我从未见过 PSS 填充与 RSACryptoServiceProvider 一起使用,但我看到它与 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);