银联云闪付小程序签名算法PHP版
所属分类:PHP之旅 | 最后更新于:2020-12-04 18:11:50 | 阅读次数:319
<?php namespace upsdk\kit; /** * 基础函数 签名 * Class Base * @package upsdk\src\Kit */ class Tools { /** * 拼接待签名字符串 按照ASCII从小到大 得到 string * @param array $data * @return string */ public static function sortByASCII(array $data) { $strs = []; // 取出数组的下标 $keys = array_keys($data); // 对下标进行排序 asort($keys); // 对二维数组按照下标的ASCII从小到大拼接成一维数组 foreach ($keys as $v) $strs[] = $v."=".$data[$v]; // 把一维数组用&转换成字符串返回 return implode("&",$strs); } /** * 对待签名字符串进行 SHA256 签名,得到 signature * @param string $data 待签名字符 * @param bool $rawOutput * @return bool|string */ public static function sha256(string $data, $rawOutput = false) { // var_dump($data); if (!is_scalar($data)) return false; $data = (string)$data; $rawOutput = !!$rawOutput; return hash('sha256', $data, $rawOutput); } /** * 生成签名随机字符串 nonceStr * @param int $length 生成的随机字符串长度 * @return string|null */ public static function nonceStr(int $length = 16) { $str = null; $strPol ="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; $max = strlen($strPol)-1; for($i=0; $i<$length; $i++){ $str .= $strPol[rand(0,$max)]; } return $str; } }
文章作者:cfn
本文链接:
500字剩余