以下是使用私钥进行签名、加密的代码示例,注意其中在return前对生成的签名密文进行base64编码:
/**
* 签名 生成签名串 基于sha1withRSA
* @param string $data 签名前的字符串
* @return string 签名串
* @link www.wdphp.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.wdphp.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;
}
使用私钥加密:
/**
* 加密
* @param $data 签名前的原字符串
* @return string 加密结果
* @link www.wdphp.com
*/
public function encrypt($data){
openssl_pkcs12_read(file_get_contents("你的.pfx文件路径"), $certs, "你的.pfx密码");
if(!$certs) return ;
openssl_private_encrypt($data, $encrypted, $certs['pkey']);
return base64_encode($encrypted);
}