我目前正在开发一个巨大的项目,可能每天使用cl ++中的zlib压缩/解压缩数千个文档。 (我们的实现有zlib 1.2.8)
我们当前的实现支持带有和不带标头的压缩文件,但是必须设置布尔“useZlibHeader”。
我们的团队想知道是否有100%可靠的方法来确定标头是否存在。
根据这个文档:https://www.ietf.org/rfc/rfc1950.txt说“FCHECK值必须是CMF和FLG,当被视为以MSB顺序(CMF * 256 + FLG)存储的16位无符号整数时,是31的倍数。“
确实这是一个很好的检查,但有可能我们最终得到一个没有标题的压缩文件,但它的数据是(CMF * 256 + FLG)将是31的倍数。
有没有更好的方法来检测标头是否存在?我们是否有可能严重检测到标头的存在,并且解压缩不会抛出异常,输出错误的数据?
谢谢
答案 0 :(得分:1)
作为启发式检查,它将是不可靠的并且易于利用。我可以设想生成一个压缩到zlib头文件的文档。如果标头被视为有效,也会产生有效的解压缩流。
实际上,对传输数据的限制可能会减轻,但可能仍然存在危险