这两天在弄某支付接口相关的东西,以前没做过这块,在签名和验签的过程中遇到了一些问题,记下来. 首先生成一个1024位的私钥: openssl genrsa -out private.pem 1024 然后根据私钥导出公钥 openssl rsa -in private.pem -pubout -out public.pem php的openssl扩
这两天在弄某支付接口相关的东西,以前没做过这块,在签名和验签的过程中遇到了一些问题,记下来.
首先生成一个1024位的私钥:
openssl genrsa -out private.pem 1024
然后根据私钥导出公钥
openssl rsa -in private.pem -pubout -out public.pem
php的openssl扩展里已经封装好了签名和验签的方法,分别是openssl_sign和openssl_verify.
function sign($data){
$p = openssl_pkey_get_private(file_get_contents('private.pem'));
openssl_sign($data, $signature, $p);
openssl_free_key($p);
return bin2hex($signature);
}
function verify($data, $sign){
$p = openssl_pkey_get_public(file_get_contents('public.pem'));
$verify = openssl_verify($data, hex2bin($sign), $p);
openssl_free_key($p);
return $verify > 0;<