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

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

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


在和第三方支付接口对接时经常会对数据进行签名和验签,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, $signature, $certs['cert']); //openssl_verify验签成功返回1,失败0,错误返回-1
    return $result;
}

本文出自 郑晓个人博客,转载时请注明出处及相应链接。

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

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

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

我只是来试下昵称

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

就想看看昵称

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

看看昵称

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

路过

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

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

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

我只是来试下昵称

发表评论

由于某些原因,您暂时可能接收不到我回复后的邮件通知,抱歉。-- 2017-05-24

如需我主动联系您,可以留言注明。

change vcode