openssl verify(): Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) |
||
| Rad 84: | Rad 84: | ||
==== Se även ==== | ==== Se även ==== | ||
[[openssl_sign]] — Generera signatur | [[openssl_sign()]] — Generera signatur | ||
= Sidslut = | = Sidslut = | ||
Nuvarande version från 31 oktober 2024 kl. 17.43
openssl_verify
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_verify — Verifiera signatur
Beskrivning
openssl_verify(
string $data,
string $signature,
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $public_key,
string|int $algorithm = OPENSSL_ALGO_SHA1
): int|false
openssl_verify() verifierar att signaturen är korrekt för den angivna datan med den offentliga nyckeln $public_key. Nyckeln måste vara den publika nyckeln som motsvarar den privata nyckeln som användes vid signering.
Parametrar
data — Strängen av data som användes för att generera signaturen.
signature — En rå binär sträng, genererad av
openssl_sign()
eller liknande metoder.
public_key — Offentlig nyckel som används för att verifiera signaturen. Kan vara:
- OpenSSLAsymmetricKey - en nyckel som returneras av
openssl_get_publickey()
- string - en PEM-formaterad nyckel (exempelvis:
-----BEGIN PUBLIC KEY----- MIIBCgK...
)
algorithm — En av signeringsalgoritmerna:
- int - en av signeringsalgoritmerna, exempelvis
OPENSSL_ALGO_SHA1
- string - en giltig sträng från
openssl_get_md_methods()
, exempelvis
"sha1WithRSAEncryption"
eller
"sha512"
.
Returnerar
Returnerar 1 om signaturen är korrekt, 0 om den är felaktig, och -1 eller false vid fel.
Changelog
Version 8.0.0 - public_key accepterar nu en OpenSSLAsymmetricKey eller OpenSSLCertificate-instans; tidigare accepterades en resurs av typen OpenSSL-nyckel eller OpenSSL X.509.
Exempel
Exempel #1 openssl_verify()-exempel
<?php
// $data och $signature antas innehålla datan och signaturen
// hämta publik nyckel från certifikat och förbered den
$pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");
// kontrollera om signaturen är giltig
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
echo "good";
} elseif ($ok == 0) {
echo "bad";
} else {
echo "ugly, error checking signature";
}
// frigör nyckeln från minnet
openssl_free_key($pubkeyid);
?>
Exempel #2 openssl_verify()-exempel
<?php
// data du vill signera
$data = 'my data';
// skapa ny privat och publik nyckel
$private_key_res = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$details = openssl_pkey_get_details($private_key_res);
$public_key_res = openssl_pkey_get_public($details['key']);
// skapa signatur
openssl_sign($data, $signature, $private_key_res, "sha256WithRSAEncryption");
// verifiera signatur
$ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA256);
if ($ok == 1) {
echo "valid";
} elseif ($ok == 0) {
echo "invalid";
} else {
echo "error: ".openssl_error_string();
}
?>
Se även
openssl_sign() — Generera signatur
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-verify.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.