函数名:gnupg_verify()
适用版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
函数描述:gnupg_verify() 函数用于验证给定的文本与签名是否匹配。
语法:gnupg_verify(resource $identifier, string $signed_text, string $signature, string &$plaintext)
参数:
- identifier:GnuPG资源标识符,通过 gnupg_init() 函数获取。
- signed_text:待验证的文本。
- signature:签名数据。
- plaintext:用于存储验证后的文本。
返回值:
- 如果验证成功,则返回 TRUE。
- 如果验证失败,则返回 FALSE。
示例:
<?php
// 初始化GnuPG资源
$gpg = gnupg_init();
// 导入公钥
gnupg_adddecryptkey($gpg, "8660281B6051D071D94B5B230549F9DC851566DC");
// 需要验证的文本和签名
$signedText = "Hello, world!";
$signature = "-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
iEYEABECAAYFAlI1zXoACgkQO2KABBYQAh+4lACgq5yC0TYw6u6K0+YyXbv/6t1Q
ImsAn2f3b1B/2W2k5K2dXcduyqyZiQsD
=4tJ2
-----END PGP SIGNATURE-----";
// 验证签名
if (gnupg_verify($gpg, $signedText, $signature, $plaintext)) {
echo "签名验证成功!";
echo "验证后的文本为:" . $plaintext;
} else {
echo "签名验证失败!";
}
?>
注意事项:
- 在使用 gnupg_verify() 函数之前,需要先通过 gnupg_init() 函数初始化 GnuPG 资源。
- 签名数据必须是 ASCII-armored 格式(以 "-----BEGIN PGP SIGNATURE-----" 开头,以 "-----END PGP SIGNATURE-----" 结尾)。
- 在验证成功后,验证后的文本将存储在传递给函数的 &$plaintext 参数中。