api加密与校验
作者:互联网
一、函数代码
/** * 校验 * @data (请求的数组) * @salt (加密盐) * */ private function verify(array $data, $salt){ $sign = $data['sign'] ?? null; if(!$sign) return false; unset($data['sign']); return $sign === hash('sha256', $this->serial($data) . $salt); } /** * 生成签名 * @data (请求的数组) * @salt (加密盐) * */ private function sign(array $data, $salt){ return hash('sha256', $this->serial($data) . $salt); } /** *生成一个经过 URL-encode 的请求字符串 * @data (请求的数组) * */ private function serial(array $data){ ksort($data);//按照键名对数组排序 return http_build_query($data); }
二、校验方式
$jsonData = file_get_contents("php://input"); $postData = json_decode($jsonData,true); if(!$this->verify($postData["data"],$salt)){ trace("签名错误了!!!!!!!!!!!!!","ERROR"); return false; }
三、加密方式
$retData = ['openlink' => "","timestamp" =>time()]; $retData["sign"] = $this->sign($retData,$salt); $this->success('返回成功', $retData);
标签:retData,加密,data,校验,sign,api,return,salt 来源: https://www.cnblogs.com/shenqilun/p/16152706.html