php接口签名服务
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
伟宏互联网科技
互联网巨头反垄断金融科技
北京互联网科技
深圳互联网科技公司
金融科技 互联网金融
易互联网科技有限公司
互联网金融 金融科技
互联网金融公司科技
互联网科技公司电话
苏州互联网科技贷款公司
北京禾田雨橡互联网科技
互联网科技博客
中国互联网金融科技基金
北京三清互联网科技
广州优美互联网科技
茂名市互联网科技产业园
高科技互联网发展前景如何
福州德业互联网科技
上海互联网科技园景观
科技创新与互联网经济
互联网与科技发展
腾讯阿里互联网科技
互联网的科技创新
湖南洣水互联网科技有限公司扣款
互联网科技大奖都有哪些公司
每天都有哪些好的互联网科技
南京一网一红互联网科技有限公司
兰石爱特工业互联网科技分公司
互联网科技对化妆品行业