openssl_verify() 函數是 PHP 中的一個內置函數,用於使用與 public_key 關聯的公鑰驗證指定數據的簽名是否正確。這必須是與用於簽名的私鑰對應的公鑰。
用法:
openssl_verify( $data, $signature, $public_key, $algorithm ):int|false
參數:此函數接受下麵列出的四個參數 -
- data:先前用於生成簽名的數據字符串。
- signature:由 openssl_sign() 或類似方式生成的原始二進製字符串。
- public_key:字符串 - PEM 格式的 key ,例如,“----BEGIN PUBLIC KEY-----MIIBCgK...”
- algorithm:openssl_get_md_methods() 函數返回的有效字符串。
返回值:如果簽名正確則返回 1,如果不正確則返回 0,錯誤時返回 -1 或 false。
注意:公鑰來自任何支持格式的證書。
下麵列出的示例說明了 openssl_verify() 函數的使用:
範例1:
PHP
<?php
// Data you want to sign
$data = 'geeks for geeks';
// Create a new pair of private and public key
$private_key_rsa = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$details = openssl_pkey_get_details($private_key_rsa);
$public_key_rsa = openssl_pkey_get_public($details['key']);
// Create signature for your data
openssl_sign($data, $signature,
$private_key_rsa, "sha256WithRSAEncryption");
// Verify signature obtained for your data
$result = openssl_verify($data, $signature,
$public_key_rsa, OPENSSL_ALGO_SHA256);
if ($result == 1) {
echo "signature is valid for given data.";
} elseif ($ok == 0) {
echo "signature is invalid for given data.";
} else {
echo "error:".openssl_error_string();
}
?>
輸出:
signature is valid for given data.
範例2:
PHP
<?php
// Data you want to sign
$data = 'geeks for geeks';
// Create a new pair of private and public key
$private_key_rsa = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$details = openssl_pkey_get_details($private_key_rsa);
$public_key_rsa = openssl_pkey_get_public($details['key']);
// Create signature for your data
openssl_sign($data, $signature,
$private_key_rsa, "sha256WithRSAEncryption");
// Change the data
$data = 'geeks and geeks';
// Verify signature obtained for your data
$result = openssl_verify($data, $signature,
$public_key_rsa, OPENSSL_ALGO_SHA256);
if ($result == 1) {
echo "signature is valid for given data.";
} elseif ($ok == 0) {
echo "signature is invalid for given data.";
} else {
echo "error:".openssl_error_string();
}
?>
輸出:
signature is invalid for given data.
參考: https://www.php.net/manual/en/function.openssl-verify.php
相關用法
- PHP imagecreatetruecolor()用法及代碼示例
- PHP fpassthru( )用法及代碼示例
- PHP ImagickDraw getTextAlignment()用法及代碼示例
- PHP Ds\Sequence last()用法及代碼示例
- PHP Imagick floodFillPaintImage()用法及代碼示例
- PHP array_udiff_uassoc()用法及代碼示例
- PHP geoip_continent_code_by_name()用法及代碼示例
- PHP GmagickPixel setcolor()用法及代碼示例
- PHP opendir()用法及代碼示例
- PHP cal_to_jd()用法及代碼示例
- PHP stream_get_transports()用法及代碼示例
- PHP Ds\Deque pop()用法及代碼示例
- PHP SimpleXMLElement children()用法及代碼示例
- PHP array_intersect_ukey()用法及代碼示例
- PHP is_numeric()用法及代碼示例
- PHP Imagick adaptiveSharpenImage()用法及代碼示例
- PHP XMLWriter endDtdEntity()用法及代碼示例
- PHP isset()用法及代碼示例
注:本文由純淨天空篩選整理自Shivam.Pradhan大神的英文原創作品 PHP openssl_verify() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。