我有一个问题。在.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上的搜索没有返回太多结果。
感谢任何帮助。非常感谢
答案 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);