php接口签名服务
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,
千家信息网最后更新 2025年12月04日php接口签名服务
1, 'data' => [], 'message' => '']; } catch (\Exception $e) { return ['status' => 0, 'data' => [], 'message' => $e->getMessage()]; } } /** * 产生随机字符串,不长于32位 * @param int $length * @return string */ public static function createNonceStr(int $length = 32): string { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } /** * 产生请求参数的排序后的字符串 * @param array $requestParamArr * @return string */ public static function createSortQueryString(array $requestParamArr): string { if (isset($requestParamArr['key'])) unset($requestParamArr['key']); if (isset($requestParamArr['signature'])) unset($requestParamArr['signature']); ksort($requestParamArr); return http_build_query($requestParamArr); } /** * 创建签名串 * @param string $sortQueryString 排序字符串 * @param string $signType 签名类型:MD5;HMAC-SHA256; * @param string $key * @return string * @throws \Exception */ public static function createSignatureString(string $sortQueryString, string $signType, string $key): string { $returnStr = ''; if ($signType == 'MD5') { $sortQueryString .= '&key=' . $key; $returnStr = md5($sortQueryString); } elseif ($signType == 'HMAC-SHA256') { $returnStr = hash_hmac('sha256', $sortQueryString, $key); } else { throw new \Exception('签名类型不支持'); } return $returnStr; } /** * 验证外部请求 * @param array $originRequestParamArr * @return array */ public static function validateRequest(array $originRequestParamArr): array { try { $validate = self::validateQueryParam($originRequestParamArr, false); if (!$validate['status']) throw new \Exception($validate['message']); $now = time(); if (($now - $originRequestParamArr['timestamp']) > 15) throw new \Exception('请求时间异常'); $signType = $originRequestParamArr['sign_type']; $originKey = $originRequestParamArr['key']; $originSignature = $originRequestParamArr['signature']; unset($originRequestParamArr['key'], $originRequestParamArr['signature']); $newSignature = self::createSignatureString(self::createSortQueryString($originRequestParamArr), $signType, $originKey); if ($originSignature != $newSignature) throw new \Exception('签名错误'); return ['status' => 1, 'data' => [], 'message' => '']; } catch (\Exception $e) { return ['status' => 0, 'data' => [], 'message' => $e->getMessage()]; } }}使用
//生成签名$request = [ 'a' => 1, 'b' => 2, 'c' => 3, 'sign_type' => 'HMAC-SHA256', 'timestamp' => time() + 600, 'nonce_str' => SignatureService::createNonceStr(), ]; SignatureService::init($request); $result = SignatureService::validateQueryParam(); if (!$result['status']) exit($result['message']); $key = 'helloworld'; $signature = SignatureService::createSignatureString(SignatureService::createSortQueryString($request), $request['sign_type'], $key); $request['key'] = $key; $request['signature'] = $signature; echo ""; print_r($request); //校验签名 $validate = SignatureService::validateRequest($request, false);
必要参数:
- 'sign_type' => 'HMAC-SHA256', //签名类型,当前支持SHA256、MD5
- 'timestamp' => '1539255134', //时间戳
- 'nonce_str' => 'n5ryqp0f9ur3u3u8lxfblxw9h03emyka',//随机数
- 'key' => 'helloworld', //密钥
- 'signature' => 'f0ca487612f15059c47aba5e8503c6400981fbed20d1af958003e3f798d1bbd2',//签名
时间
必要
参数
字符
字符串
密钥
类型
错误
随机数
支持
生成
接口
服务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2台服务器mysql数据同步
mir4输入账号后不显示服务器
火山软件开发平台
流量显示未连接到服务器
腾讯数据库中心招聘
百家号科技和互联网区别
色诺芬j经济金融数据库
街道软件开发公司
奉贤区信息软件开发诚信服务
网络技术人才招聘条件
山东国核网络技术信息
上闲鱼提示网络安全是怎么回事
科技互联网企业排名
网络安全频道出错
数据库优化的实践报告
sap ase开源数据库
安装软件开发设计步骤
ibm 服务器管理程序
网络安全大赛谁赢了
svn3.6服务器搭建
昆明mes软件开发
按照正常的软件开发流程
腾讯个人服务器备案需要什么
2017国家网络安全主题
锡山区重型软件开发内容
深圳企业软件开发如何收费
重庆hp服务器阵列卡使用
软件开发年工资标准
服务器 接入方式
网络安全工作方案 榜样推选