[code] $public_key = 'djfkdfjj38eu34jkfmgmnk**********'; //公钥
//要加密的参数
$post_data = [
'id'=>'100000222', //会员ID
'changeBalance'=>500, // 调整金额
];
ksort($post_data); //排序
$string =ToUrlParams($post_data); //格式化参数
$sign = public_encrypt($string,$public_key); //生成加密签名
//$sign 就是得到的加密签名,然后调用接口的时候,带上这个参数
//调用接口代码忽略,请自行查看文档
/**
* 格式化参数格式化成url参数
*/
function ToUrlParams($post_data)
{
$buff = "";
foreach ($post_data as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
/**
*获取公共key字符串 重新格式化 为保证任何key都可以识别
*/
function get_public_key($public_key){
$search = [
"-----BEGIN PUBLIC KEY-----",
"-----END PUBLIC KEY-----",
"\n",
"\r",
"\r\n"
];
$public_key=str_replace($search,"",$public_key);
return $search[0] . PHP_EOL . wordwrap($public_key, 64, "\n", true) . PHP_EOL . $search[1];
}
/**
*
* 用公密钥加密
* $input 需要加密的字符串
* $public_key 公钥
*/
function public_encrypt($input,$public_key) {
$public_key = openssl_pkey_get_public(get_public_key($public_key));
openssl_public_encrypt($input,$output,$public_key);
return base64_encode($output);
}[/code]