2017-08-15 10 views
2

質問があります。 .netでの暗号の使用は次のようになります。私はプライベートキーを解析することができ、いくつかのデータバイトに署名したい.pemファイルを持っています。私が使用しているコードは以下の通りです:.net PSSパディング付きRSA署名データエラー

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

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); 
+0

RSACryptoServiceProviderは、PSSをサポートしていません(また、今後もサポートされません)。 https://github.com/dotnet/corefx/blob/master/Documentation/architecture/cross-platform-cryptography.md#rsa – bartonjs

+0

素晴らしいです。 MSDNは、RSACryptoServiceProviderでPSSを使用できないことについて何も言及していませんでした。みんなありがとう –