データに署名しようとすると、常に無効なアルゴリズムが指定されています。ここでWindows server 2012 "無効なアルゴリズムが指定されています。"
は私の証明書の詳細です:私は、次のコードを使用しています。
、おかげで私を助けてください。
データに署名しようとすると、常に無効なアルゴリズムが指定されています。ここでWindows server 2012 "無効なアルゴリズムが指定されています。"
は私の証明書の詳細です:私は、次のコードを使用しています。
、おかげで私を助けてください。
代わりの
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;
return csp.SignHash(hash, CryptoConfig.MapNameToOid("SHA256"));
使用
using (RSA privateKey = cert.GetRSAPrivateKey())
{
return privateKey.SignHash(hash, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
(.NET 4.6+が必要)
問題は、あなたのRSACryptoServiceProvider
オブジェクトはSHA-2に先行CAPI PROV_RSA_FULL
プロバイダを使用してあります。 SHA-2シグネチャ(ソフトウェアプロバイダから)は、鍵がPROV_RSA_AES
であることを要求します。これは、主に鍵の作成/ PFXインポートによって制御されます。
ありますが、まだsoft-deprecated RSACryptoServiceProvider
を使用するために、プロバイダのタイプを再バインドするために行うことができます回避策はありますが、特に(オブジェクトメソッドを残していない)、このようなコードで、あなたがcert.GetRSAPrivateKey()
の使用に切り替えると返されたRSA
オブジェクトをキャストすることは避けてくださいアルゴリズムベースクラスを超えています。
スクリーンショットは、CertUIのようなものに適しています。しかし、コードではありません。 – bartonjs