当前位置:博客首页>>PHP >> 阅读正文

php基于sha1withRSA算法的签名和验签(pfx证书)

作者: 郑晓 分类: PHP 发布于: 2016-06-21 17:58 浏览(19,652) 评论(13)


在和第三方支付接口对接时经常会对数据进行签名和验签,sha1WithRSA也算是比较常用的一种签名加密算法。php开启openssl库后实现起来也算比较简单。
我在这里使用sha1withRSA算法来实现数据的加密签名和验签,其中公钥和私钥均读取自接口方提供的.pfx证书文件。

以下是使用私钥进行签名的代码示例,注意其中在return前对生成的签名密文进行base64编码:

/**
* 签名  生成签名串  基于sha1withRSA
* @param string $data 签名前的字符串
* @return string 签名串
* @link www.zh30.com
*/

function sign($data) {
$certs = array();
openssl_pkcs12_read(file_get_contents("你的.pfx文件路径"), $certs, "password"); //其中password为你的证书密码
if(!$certs) return ;
$signature = '';
openssl_sign($data, $signature, $certs['pkey']);
return base64_encode($signature);
}

验签时使用公钥,也就是.pfx文件中的cert KEY:

/**
* 验签  验证签名  基于sha1withRSA
* @param $data 签名前的原字符串
* @param $signature 签名串
* @return bool
* @link www.zh30.com
*/

function verify($data, $signature) {
$certs = array();
openssl_pkcs12_read(file_get_contents("你的.pfx文件路径"), $certs,  "password");
if(!$certs) return ;
$result = (bool) openssl_verify($data, base4_decode($signature), $certs['cert']);   //openssl_verify验签成功返回1,失败0,错误返回-1
return $result;
}
       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/php-sha1withrsa-sign-verify-pfx.html

php基于sha1withRSA算法的签名和验签(pfx证书):目前有13 条留言

用户评论头像 求教发表于 2019年03月01日 17:30[回复]

请问下,验签跟证书域名有关吗,为什么我使用您的方法,验签返回的是0呢

    用户评论头像 郑晓发表于 2019年03月01日 17:40[回复]

    可能证书路径不正确、密码不正确、不是PKCS#12格式的证书

      用户评论头像 求教发表于 2019年03月01日 17:42[回复]

      路径和密码都是正确的,已经打印出了公私钥了,证书是PKCS#12格式的证书,有2个证书,一个是自制pfx证书,一个是找西部数码买的pfx证书

      用户评论头像 求教发表于 2019年03月01日 17:44[回复]

      路径和密码都是正确的,已经打印出了公私钥了,证书是PKCS#12格式的证书,有2个证书,一个是自制pfx证书,一个是找西部数码买的pfx证书,测试了都不行,请问下您方便发一个你的pfx证书给我,我测试一下吗

        用户评论头像 郑晓发表于 2019年03月02日 13:19[回复]

        抱歉,是我的锅。。。签名时,把返回的签名数据用base64转码了,所以在验签时$signature也 需要base64_decode。文中已经修改。。。

用户评论头像 丁八块发表于 2018年11月07日 20:04[回复]

我也是来试试昵称的

用户评论头像 昵称可以自己定呢发表于 2018年10月19日 14:57[回复]

昵称可以自己定呢

用户评论头像 肚满肠肥的蜜三刀发表于 2016年08月23日 20:32[回复]

我只是来试下昵称

用户评论头像 好心的斑马发表于 2016年07月29日 14:58[回复]

就想看看昵称

用户评论头像 坑爹的春卷发表于 2016年07月27日 13:41[回复]

看看昵称

用户评论头像 友好的镘头发表于 2016年07月17日 02:16[回复]

路过

用户评论头像 宽厚的乌贼发表于 2016年07月13日 09:13[回复]

博主我想和你交个朋友,可以加我QQ吗。我觉得你文章写得还不错。

用户评论头像 可信的长颈鹿发表于 2016年06月27日 15:57[回复]

我只是来试下昵称