Freigeben über


Überprüfen von Signaturen

Um zu überprüfen, ob Daten von einem bestimmten Teilnehmer signiert wurden, sind folgende Informationen erforderlich:

  • der öffentliche Schlüssel des Teilnehmers, der die Daten signiert hat.

  • die digitale Signatur.

  • die Daten, die signiert wurden.

  • der Hashalgorithmus, der vom Signaturgeber verwendet wurde.

Mit der RSAPKCS1SignatureDeformatter-Klasse können Sie eine mit der RSAPKCS1SignatureFormatter-Klasse erstellte Signatur überprüfen. Der RSAPKCS1SignatureDeformatter-Klasse muss der öffentliche Schlüssel des Signaturgebers zur Verfügung gestellt werden. Zum Definieren des öffentlichen Schlüssels sind die Modulooperator- und Exponentenwerte erforderlich. (Diese Werte müssen von dem Teilnehmer, der das öffentliche/private Schlüsselpaar generiert hat, bereitgestellt werden.) Zuerst wird ein RSACryptoServiceProvider-Objekt erstellt, das den öffentlichen Schlüssel enthält, mit dem die Signatur überprüft wird. Danach wird mit den Modulooperator- und Exponentenwerten, durch die der öffentliche Schlüssel definiert wird, eine RSAParameters-Struktur initialisiert.

Anhand des folgenden Codes wird die Erstellung einer RSAParameters-Struktur verdeutlicht. Für die Modulus-Eigenschaft wird der Wert eines Bytearrays mit dem Namen ModulusData und für die Exponent-Eigenschaft der Wert eines Bytearrays mit dem Namen ExponentData festgelegt.

Dim RSAKeyInfo As RSAParameters
RSAKeyInfo.Modulus = ModulusData
RSAKeyInfo.Exponent = ExponentData
RSAParameters RSAKeyInfo;
RSAKeyInfo.Modulus = ModulusData;
RSAKeyInfo.Exponent = ExponentData;

Nach der Erstellung des RSAParameters-Objekts können Sie mit den dort definierten Werten eine neue Instanz der RSACryptoServiceProvider-Klasse initialisieren. Die RSACryptoServiceProvider-Instanz wird dann zum Übertragen des Schlüssels an den Konstruktor einer RSAPKCS1SignatureDeformatter-Klasse übergeben.

Dieser Prozess wird anhand des folgenden Beispiels veranschaulicht. HashValue und SignedHashValue sind in diesem Beispiel Bytearrays, die von einer Gegenseite bereitgestellt wurden. Die Gegenseite hat den Wert HashValue mit dem SHA1-Algorithmus signiert und so die digitale Signatur SignedHashValue erzeugt. Mit der RSAPKCS1SignatureDeformatter.VerifySignature-Methode wird überprüft, ob die digitale Signatur gültig ist und zum Signieren des Werts HashValue verwendet wurde.

Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Dim RSADeformatter As New RSAPKCS1SignatureDeformatter(RSA)
RSADeformatter.SetHashAlgorithm("SHA1")
If RSADeformatter.VerifySignature(HashValue, SignedHashValue) Then
   Console.WriteLine("The signature is valid.")
Else
   Console.WriteLine("The signture is not valid.")
End If
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);
RSADeformatter.SetHashAlgorithm("SHA1");
if(RSADeformatter.VerifySignature(HashValue, SignedHashValue))
{
   Console.WriteLine("The signature is valid.");
}
else
{
   Console.WriteLine("The signature is not valid.");
}

Wenn die Signatur gültig ist, wird durch dieses Codefragment die Meldung "The signature is valid" ausgegeben. Wenn die Signatur ungültig ist, wird die Meldung "The signature is not valid" angezeigt.

Siehe auch

Konzepte

Generieren von Signaturen
Kryptografische Signaturen

Weitere Ressourcen

Kryptografische Aufgaben
Kryptografische Dienste