当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP openssl_verify()用法及代码示例


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




相关用法


注:本文由纯净天空筛选整理自Shivam.Pradhan大神的英文原创作品 PHP openssl_verify() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。