$v){ $stringA .= $k.'='.urlencode($v).'&'; } $stringA .= 'key='.$key; $sign = base64_encode(md5($stringA)); return $sign; }catch (\Exception $e){ return false; } } // 验签并返回解析结果 public static function checkSign($stream, $key) { try{ if(!$stream) return false; $json = base64_decode($stream); $param = json_decode($json, true); $stream_sign = $param['sign']; $sign = self::sign($param, $key); if($sign != $stream_sign) return false; return $param; }catch (\Exception $e){ return false; } } // 打补丁 public static function packPatch($name, $desc, $exec, $ver, $key) { $param = []; // 补丁名称 $param['name'] = $name; // 补丁描述 $param['desc'] = $desc; // 补丁适用版本,适用于在此版本之前的版本升级到此版本时使用 $param['ver'] = $ver; // 补丁发行日期 $param['date'] = date('Y-m-d H:i:s'); // 补丁代码 - php $param['exec'] = self::packExec($exec); // 签名 $param['sign'] = self::sign($param, $key); return base64_encode(json_encode($param)); } // 编码补丁代码 private static function packExec($exec) { $stringA = urlencode(htmlspecialchars($exec)); $stringB = base64_encode($stringA); return $stringB; } // 解码补丁代码 public static function unpackExec($exec) { $stringA = base64_decode($exec); $stringB = htmlspecialchars_decode(urldecode($stringA)); return $stringB; } }