CryptVerifySignature

Überprüft, ob eine digitale Signatur für die Daten gültig ist.

Format 

CryptVerifySignature ( Daten ; Algorithmus ; öffentlicherRSASchlüssel ; Signatur )

Parameter 

Daten - beliebiger Textausdruck, der die Daten angibt, die mit Signatur verglichen werden.

Algorithmus - Name des zu verwendenden kryptografischen Algorithmus (siehe Funktion „CryptAuthCode“).

öffentlicherRSASchlüssel - Text, der den öffentlichen RSA-Schlüssel PKCS #1 im PEM-Format angibt, der mit dem privaten Schlüssel für die Erstellung der Signatur verglichen wird.

Signatur - die binäre RSA-Signatur, die mit Daten verglichen wird, etwa dem Wert, den die Funktion „CryptGenerateSignature“ zurückgibt.

Zurückgegebener Datentyp 

Zahl

Ursprung in Version 

18.0

Beschreibung 

Um eine Signatur zu verifizieren, vergleicht diese Funktion den Meldungsextrakt von Daten (anhand des angegebenen Algorithmus) mit dem Extrakt, den die Entschlüsselung von Signatur mit öffentlicherRSASchlüssel ergab.

Ein öffentlicher RSA-Schlüssel muss folgendes Format aufweisen:

Kopieren
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqqDiwrPQwVaJzOzfFVBd
...
egkXva5cYBb8PNifmlPXVb8CAwEAAQ==
-----BEGIN PUBLIC KEY-----

Wenn die Signatur für die Daten gültig ist, gibt diese Funktion 1 (wahr) zurück. Wenn die Signatur ungültig ist, gibt sie 0 (falsch) zurück. Wenn einer der Parameter ungültig ist, gibt sie „?“ zurück.

Beispiel 1 

Verwendet den SHA-512-Algorithmus, um den Extrakt von Tabelle::SignierterText zu generieren. Entschlüsselt die Base64-Kodierung der Signatur, die im Textfeld Tabelle::Signatur gespeichert ist, und gibt sie als Containerdaten zurück. Entschlüsselt die Signatur anhand des Werts im Feld Tabelle::öffentlicherRSASchlüssel und vergleicht den Signaturextrakt mit dem Extrakt auf der Basis des Felds Tabelle::SignierterText. Wenn die Signatur gültig ist, wird 1 zurückgegeben.

Kopieren
CryptVerifySignature ( 
    Tabelle::SignierterText ; "SHA512" ; Tabelle::öffentlicherRSASchlüssel ;     
    Base64Decode (         
        Tabelle::Signatur ; "sig.data"     
    ) 
)