You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
< ? php
namespace Sdk\Event ;
use Think\Controller ;
class AliPayEvent extends Controller {
/**
*验签排序
*/
public function argSort ( $para ) {
ksort ( $para );
reset ( $para );
return $para ;
}
//RSA签名
public function sign ( $data ) {
//读取私钥文件
$priKey = file_get_contents ( dirname ( dirname ( __FILE__ )) . " /SecretKey/alipay/rsa_private_key.pem " ); //私钥文件路径
//转换为openssl密钥, 必须是没有经过pkcs8转换的私钥
$res = openssl_get_privatekey ( $priKey );
//$res = openssl_pkey_get_private($priKey);
//调用openssl内置签名方法, 生成签名$sign
openssl_sign ( $data , $sign , $res );
//释放资源
openssl_free_key ( $res );
//base64编码
$sign = base64_encode ( $sign );
return $sign ;
}
//验签
public function rsa_verify ( $data , $sign ) {
// 读取公钥文件
$pubKey = file_get_contents ( dirname ( dirname ( __FILE__ )) . " /SecretKey/alipay/rsa_public_key.pem " ); //私钥文件路径
// 转换为openssl格式密钥
$res = openssl_get_publickey ( $pubKey );
// 调用openssl内置方法验签, 返回bool值
$result = ( bool ) openssl_verify ( $data , base64_decode ( $sign ), $res );
// 释放资源
openssl_free_key ( $res );
return $result ;
}
}