函数名:openssl_verify()
适用版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
用法:openssl_verify(string $data, string $signature, mixed $public_key, int $algorithm = OPENSSL_ALGO_SHA256): int|bool
说明:openssl_verify() 函数用于验证通过 openssl_sign() 函数签名的数据。它通过使用公钥和签名来验证数据的完整性和真实性。
参数:
- $data:要验证的数据,通常是原始数据的哈希值。
- $signature:签名数据。
- $public_key:公钥,通常是证书文件路径或者公钥字符串。
- $algorithm:可选参数,指定使用的哈希算法,默认为 OPENSSL_ALGO_SHA256。
返回值:
- 如果签名验证成功,返回1;
- 如果签名验证失败,返回0;
- 如果发生错误,返回-1。
示例:
<?php
// 原始数据
$data = "Hello, world!";
// 签名数据
$signature = base64_decode("...");
// 公钥
$public_key = file_get_contents("public_key.pem");
// 验证签名
$result = openssl_verify($data, $signature, $public_key);
if ($result == 1) {
echo "签名验证成功!";
} elseif ($result == 0) {
echo "签名验证失败!";
} else {
echo "发生错误:" . openssl_error_string();
}
?>
上述示例中,我们首先定义了原始数据、签名数据和公钥。然后,使用 openssl_verify() 函数来验证签名。如果返回值为1,则表示签名验证成功;如果返回值为0,则表示签名验证失败;如果返回值为-1,则表示发生了错误,我们可以通过 openssl_error_string() 函数获取具体的错误信息。