openssl sign()

Från Wiki.linux.se
Version från den 31 oktober 2024 kl. 17.46 av Admin (diskussion | bidrag) (→‎Parametrar)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

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, exempelvis OPENSSL_ALGO_SHA1
 - string - en giltig sträng från openssl_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.