CryptGenerateSignature

Genererar den digitala signaturen för data.

Format 

CryptGenerateSignature ( data ; algoritm ; privatRSANyckel ; nyckelLösenord )

Parametrar 

data – ett textuttryck som en signatur ska genereras från.

algoritm - namnet på den kryptografiska algoritm som ska användas (mer information finns i Funktionen CryptAuthCode).

privatRSANyckel – text som representerar en privat (hemlig) RSA-nyckel. Nyckeln kan vara krypterad.

nyckelLösenord – lösenordet som avkrypterar privatRSANyckel. Om privatRSANyckel inte är krypterad ignoreras den här parametern.

Returnerad datatyp 

container

Ursprungsversion 

18.0

Beskrivning 

För att skapa en signatur beräknar den här funktionen först meddelandesammandraget för parametern data med hjälp av den angivna algoritmen. Sammandraget krypteras med parametern privatRSANyckel. Om den privata nyckeln själv är krypterad måste du ange lösenordet som den sista parametern, nyckelLösenord.

En okrypterad privat RSA-nyckel måste ha det här formatet:

Kopiera
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAqqDiwrPQwVaJzOzfFVBdhNjRNRxghZVQ9a3S88so8piw0uRt
...
A4jh5ffbGA6rlv1kEt1Inq2XDnKASjnWQGltDWWTJFs/XBcfoFXHpYiVINmp
-----END RSA PRIVATE KEY-----

En krypterad privat RSA-nyckel måste ha det här formatet:

Kopiera
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B2EFE673714F681D

gMvo1cn1+Sjch4cPXT/Mty0pILnsbM5SsBPadRJJQtrGrM8LkkrRNdxYRBeIGUMj
...
lHGJJBHogUW4Ig3/kd4ROVHusRYLtyyfz13A96tIl6Y7lu2L7alNWQ==
-----END RSA PRIVATE KEY-----

Du kan använda OpenSSL-verktygen för att skapa ett RSA-nyckelpar. Mer information finns i www.openssl.org.

Den här funktionen returnerar en binär signatur av data som containerdata, eller också returnerar den "?" om någon av parametrarna är ogiltig. Du kan konvertera containerdata till text med Funktionen Base64EncodeRFC eller Funktionen HexEncode.

Exempel 1 

Använder SHA-512-algoritmen med en krypterad privat nyckel för att signera data i textfältet Tabell::TextAttSignera. Signaturen returneras som Base64-kodad text.

Kopiera
Base64EncodeRFC ( 4648 ; 
    CryptGenerateSignature ( 
        Tabell::TextAttSignera ; "SHA512" ; Tabell::PrivatRSANyckel ; $Lösenord 
    )
)