MyQEE\Server\RPC\Server::decryption PHP Метод

decryption() публичный статический Метод

解密数据
public static decryption ( $data, $key = null, $rpc = null ) : false | mixed
$data
Результат false | mixed
    public static function decryption($data, $key = null, $rpc = null)
    {
        if (!$data instanceof \stdClass) {
            return false;
        }
        if ($rpc === static::$defaultRPC) {
            $rpc = null;
        }
        if (!$data->data || !($tmp = self::rc4($data->data, true, $key)) || $data->hash !== md5($tmp . $key . $rpc)) {
            # 数据错误
            return false;
        }
        return msgpack_unpack($tmp);
    }

Usage Example

Пример #1
0
 public function onReceive($server, $fd, $fromId, $data)
 {
     /**
      * @var \Swoole\Server $server
      */
     $tmp = @msgpack_unpack($data);
     if ($tmp && is_object($tmp)) {
         $data = $tmp;
         unset($tmp);
         if ($data instanceof \stdClass) {
             if ($data->bind) {
                 # 绑定进程ID
                 $server->bind($fd, $data->id);
                 return;
             }
             if ($key = \MyQEE\Server\Register\Client::$host->key) {
                 # 需要解密
                 $data = \MyQEE\Server\RPC\Server::decryption($data, $key);
                 # 解密失败
                 if (!$data) {
                     return;
                 }
             }
             $eof = \MyQEE\Server\RPC\Server::$EOF;
             switch ($data->type) {
                 case 'task':
                 case 'taskWait':
                     $rs = Server::$workerTask->onTask($server, $data->id, $data->wid, $data->data, $data->sid);
                     if ($rs !== null || $data->type === 'taskWait') {
                         # 执行 Finish
                         $rsData = new \stdClass();
                         $rsData->id = $data->id;
                         $rsData->data = $rs;
                         $rsData->wname = $data->wname;
                         if ($key) {
                             # 加密数据
                             $rsData = \MyQEE\Server\RPC\Server::encrypt($rsData, $key) . $eof;
                         } else {
                             # 格式化数据
                             $rsData = msgpack_pack($rsData) . $eof;
                         }
                         $server->send($fd, $rsData, $fromId);
                     }
                     break;
             }
         }
     } else {
         Server::$instance->warn("task server get error msgpack data length: " . strlen($data));
         Server::$instance->debug($data);
         $this->server->close($fd);
     }
 }
All Usage Examples Of MyQEE\Server\RPC\Server::decryption