1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?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');
- // 补丁代码 - 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;
- }
- }
|