openssl sign()
openssl_sign
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_sign — Generera signatur
Beskrivning
openssl_sign( string $data, string &$signature, #[\SensitiveParameter] OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key, string|int $algorithm = OPENSSL_ALGO_SHA1 ): bool
openssl_sign() beräknar en signatur för den angivna datan genom att skapa en kryptografisk digital signatur med den privata nyckeln kopplad till $private_key
. Notera att själva datan inte krypteras.
Parametrar
data — Strängen av data du vill signera.
signature — Om anropet lyckas returneras signaturen i $signature
.
private_key — Den privata nyckel som används för att generera signaturen. Kan vara:
- OpenSSLAsymmetricKey - en nyckel, erhållen från openssl_get_privatekey()
- string - en PEM-formaterad nyckel
algorithm — Algoritmen för signering. Kan vara:
- int - en av de tillgängliga signeringsalgoritmerna, exempelvisOPENSSL_ALGO_SHA1
- string - en giltig sträng frånopenssl_get_md_methods()
, exempelvis"sha256WithRSAEncryption"
eller"sha384"
.
Returnerar
Returnerar true
vid framgång eller false
vid fel.
Changelog
Version 8.0.0 - private_key
accepterar nu en OpenSSLAsymmetricKey eller OpenSSLCertificate-instans; tidigare accepterades en resurs av typen OpenSSL-nyckel eller OpenSSL X.509.
Exempel
Exempel #1 openssl_sign()-exempel
<?php // $data antas innehålla datan som ska signeras // hämta privat nyckel från fil och förbered den $pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem"); // beräkna signatur openssl_sign($data, $signature, $pkeyid); // frigör nyckeln från minnet openssl_free_key($pkeyid); ?>
Exempel #2 openssl_sign()-exempel
<?php // data du vill signera $data = 'my data'; // skapa nytt par av privat och publik nyckel $new_key_pair = openssl_pkey_new(array( "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, )); openssl_pkey_export($new_key_pair, $private_key_pem); $details = openssl_pkey_get_details($new_key_pair); $public_key_pem = $details['key']; // skapa signatur openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256); // spara för senare användning file_put_contents('private_key.pem', $private_key_pem); file_put_contents('public_key.pem', $public_key_pem); file_put_contents('signature.dat', $signature); // verifiera signatur $r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption"); var_dump($r); ?>
Se även
openssl_verify() — Verifiera signatur
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-sign.php PHP Funktioner Funktionsreferens OpenSSL-funktioner
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.