📜  PHP openssl_verify()函数(1)

📅  最后修改于: 2023-12-03 15:18:20.632000             🧑  作者: Mango

PHP openssl_verify()函数

简介

openssl_verify() 函数使用公钥验证给定数据的签名。它可以用来验证来自第三方的数据是否曾被正确签名,以确定数据是否已被篡改或伪造。

语法
openssl_verify ( string $data , string $signature , mixed $public_key , int $algorithm = OPENSSL_ALGO_SHA256 ) : bool
参数说明

参数名 | 描述 -------|------- data | 要验证签名的数据。 signature | 签名。 public_key | 公钥。 algorithm | 指定摘要算法,如 SHA-1、SHA-256 等。默认为 SHA256。

返回值

如果签名有效,返回 1,否则返回 0

使用示例

以下示例展示如何使用 openssl_verify() 函数验证数据签名。

// 假设以下为从服务器上下载到的数据和签名
$data = 'Some data to be validated';
$signature = '308201753082011EA...ABE83B42BA2AA8B22F';

// 从文件中获取公钥
$public_key = openssl_get_publickey(file_get_contents('public_key.pem'));

// 验证签名
$result = openssl_verify($data, base64_decode($signature), $public_key, OPENSSL_ALGO_SHA256);

// 输出验证结果
if ($result == 1) {
    echo 'Signature is valid.';
} else {
    echo 'Signature is invalid.';
}

// 关闭公钥
openssl_free_key($public_key);
解释说明

以上示例首先定义了要验证的数据和签名。openssl_get_publickey 函数从文件中获取公钥,openssl_verify 函数使用此公钥验证数据签名的有效性。如果签名有效,则输出 Signature is valid.,否则输出 Signature is invalid.。最后使用 openssl_free_key 函数关闭公钥。

小结

在 PHP 中使用 openssl_verify() 函数可以验证来自第三方的数据签名,以确定数据是否已被篡改或伪造。它可以帮助我们确保数据的完整性和安全性。