首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

openssl_verify

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_verify - 验证签名

描述

代码语言:javascript
复制
int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )

openssl_verify()使用与pub_key_id关联的公钥验证signature是否符合特定的data。这必须是与用于签名的私钥相对应的公钥。

参数

data

用于先前生成签名的数据字符串

signature

由openssl_sign()或类似方法生成的原始二进制字符串

pub_key_id

资源 - 由openssl_get_publickey()返回的密钥

字符串 - PEM格式化密钥,例如“----- BEGIN PUBLIC KEY ----- MIIBCgK ...”

signature_alg

int - 这些签名算法之一

字符串 - 由openssl_get_md_methods()示例,“sha1WithRSAEncryption”或“sha512”返回的有效字符串。

返回值

如果签名正确则返回1,如果不正确则返回0,错误时返回-1。

Changelog

版本

描述

5.2.0

signature_alg参数已添加。

示例

Example #1 openssl_verify() example

代码语言:javascript
复制
<?php
//?$data?and?$signature?are?assumed?to?contain?the?data?and?the?signature

//?fetch?public?key?from?certificate?and?ready?it
$pubkeyid?=?openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");

//?state?whether?signature?is?okay?or?not
$ok?=?openssl_verify($data,?$signature,?$pubkeyid);
if?($ok?==?1)?{
????echo?"good";
}?elseif?($ok?==?0)?{
????echo?"bad";
}?else?{
????echo?"ugly,?error?checking?signature";
}
//?free?the?key?from?memory
openssl_free_key($pubkeyid);
?>

Example #2 openssl_verify() example

代码语言:javascript
复制
<?php
//data?you?want?to?sign
$data?=?'my?data';

//create?new?private?and?public?key
$private_key_res?=?openssl_pkey_new(array(
????"private_key_bits"?=>?2048,
????"private_key_type"?=>?OPENSSL_KEYTYPE_RSA,
));
$details?=?openssl_pkey_get_details($private_key_res);
$public_key_res?=?openssl_pkey_get_public($details['key']);

//create?signature
openssl_sign($data,?$signature,?$private_key_res,?"sha1WithRSAEncryption");

//verify?signature
$ok?=?openssl_verify($data,?$signature,?$public_key_res,?OPENSSL_ALGO_SHA1);
if?($ok?==?1)?{
????echo?"valid";
}?elseif?($ok?==?0)?{
????echo?"invalid";
}?else?{
????echo?"error:?".openssl_error_string();
}
?>

另请参阅

  • openssl_sign() - 生成签名

← openssl_spki_verify

openssl_x509_check_private_key →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com