PHP openssl_verify OpenSSL 函数
-
定义和用法
openssl_verify - 验证签名 -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 5.2.0 添加了 signature_alg 参数。
-
语法
openssl_verify( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )
openssl_verify() 使用与pub_key_id关联的公钥验证指定数据data的签名signature是否正确。这必须是与用于签名的私钥相对应的公钥。 -
参数
参数 必需的 描述 data 是 以前用来生成签名的数据字符串。 signature 是 原始二进制字符串,通过openssl_sign()或类似的函数生成。 pub_key_id 是 resource - 一个密钥, 通过 openssl_get_publickey() 函数返回。 string - 一个 PEM 格式的密钥, 比如, "-----BEGIN PUBLIC KEY----- MIIBCgK..." signature_alg 否 int - 以下签名算法常量之一 string - 由openssl_get_md_methods()函数返回的可用字符串,比如, "sha1WithRSAEncryption" 或者 "sha512". -
返回值
如果签名正确返回 1, 签名错误返回 0, 内部发生错误则返回-1. -
示例
// $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);
-
相关页面
openssl_sign() - 生成签名。