Wenn ich versuche, Daten zu signieren, wird immer ein ungültiger Algorithmus angegeben. Ich verwende folgenden Code:Windows Server 2012 "Ungültiger Algorithmus angegeben."
Hier mein Zertifikatdetails ist.
Bitte helfen Sie mir, Dank.
Wenn ich versuche, Daten zu signieren, wird immer ein ungültiger Algorithmus angegeben. Ich verwende folgenden Code:Windows Server 2012 "Ungültiger Algorithmus angegeben."
Hier mein Zertifikatdetails ist.
Bitte helfen Sie mir, Dank.
Statt
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;
return csp.SignHash(hash, CryptoConfig.MapNameToOid("SHA256"));
Verwendung
using (RSA privateKey = cert.GetRSAPrivateKey())
{
return privateKey.SignHash(hash, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
(Erfordert .NET 4.6+)
Das Problem ist Ihr RSACryptoServiceProvider
Objekt die CAPI PROV_RSA_FULL
Anbieter verwendet, die SHA-2 älter . SHA-2-Signaturen (vom Softwareanbieter) erfordern, dass der Schlüssel in PROV_RSA_AES
ist, eine Tatsache, die hauptsächlich durch den Schlüsselerstellungs/PFX-Import gesteuert wird.
Es gibt eine Abhilfe Sie rebinding den Anbietertyp noch die soft-deprecated RSACryptoServiceProvider
verwenden tun können, um, vor allem aber in Code wie folgt (in dem das Objekt nicht die Methode nicht verlassen) Sie cert.GetRSAPrivateKey()
und vermeiden mit dem zurück Gießen RSA
Objekt wechseln sollte jenseits der Algorithmus-Basisklasse.
Screenshots sind für Dinge wie CertUI geeignet. Aber nicht für Code. – bartonjs