【问题标题】:Can a Protobuf message begin with a gzip magic number?Protobuf 消息可以以 gzip 幻数开头吗?
【发布时间】:2020-08-28 03:09:08
【问题描述】:

当我发送Protobuf 消息可选 使用 gzip 压缩时,我可以相信如果消息以 gzip 幻数 (0x1f8b) 开头,它是压缩版?
换句话说,Protobuf 消息是否有可能以0x1f8b 开头,所以我的检测方法会失败,因此我必须在前面加上一个标记标志来明确指示压缩?

【问题讨论】:

    标签: protocol-buffers gzip


    【解决方案1】:

    Hex 1f 是二进制 11111,在 protobuf varint/field-header 术语中,它是一个单字节整数。字段标题的最低 3 位是线路类型,因此这将是线路类型 7。但是,没有线路类型 7。所以:十六进制 1f 不是有效的字段头,因此不能是有效 protobuf 消息的第一个字节。

    所以:如果你看到 gzip 幻数,那绝对不是看起来相似的 protobuf 消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2016-02-02
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多