$value) { if ($key == 'signData' || $key == 'signType') { continue; } $value = strval($value); if ($value === '') { continue; } $str .= "{$key}={$value}&"; } $str = rtrim($str, '&'); return self::strToHex(hash_hmac('sha1', $str, $secretKey, true)); } /** * @param array $data * @param string $secretKey * @return bool */ public static function checkSign($data, $secretKey) { $sign = isset($data['signData']) ? $data['signData'] : ''; if ($sign == '') { return false; } return self::makeSign($data, $secretKey) == $sign; } /** * @param string $str * @return string */ public static function strToHex($str) { $hexStr = ''; for ($i = 0, $len = strlen($str); $i < $len; $i++) { $ascii = ord($str[$i]); // 0 - 255 $hexStr .= self::$hex[$ascii >> 4 & 0x0f]; // 高4位 $hexStr .= self::$hex[$ascii & 0x0f]; // 低4位 } return $hexStr; } }