|
@@ -0,0 +1,80 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+ * User lin
|
|
|
+ * Class Patch
|
|
|
+ * @package helper
|
|
|
+ */
|
|
|
+class Patch
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ public static function sign($param, $key)
|
|
|
+ {
|
|
|
+ try{
|
|
|
+ if(isset($param['sign'])) unset($param['sign']);
|
|
|
+ ksort($param);
|
|
|
+ $stringA = '';
|
|
|
+ foreach ($param as $k=>$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');
|
|
|
+
|
|
|
+ $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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|