压缩 AS2 主体

Posted

技术标签:

【中文标题】压缩 AS2 主体【英文标题】:Compressed AS2 Body 【发布时间】:2021-08-14 03:36:22 【问题描述】:

我正在努力解压缩来自 BizTalk Server 的 AS2 请求的 Zlib 压缩 Mime 主体。

事情是这样的:

我收到的 HTTP 正文与预期的一样。我可以阅读 ASCII 编码的 Mime Header:

"Content-type: application/pkcs7-mime; smime-type=compressed-data; name=smime.p7m\r\nContent-Transfer-Encoding: binary\r\n\r\n"

以两个换行符结尾,我期待之后的压缩体。 但是当我使用 Ionic.Zlib ZlibStream.UncompressBuffer() 解压缩以下字节时,它会引发错误。

Zlib Header 可以通过例如十六进制编码字节“78da”来识别。当我从那里开始解压缩它时,它工作正常。

两个换行符结束mime头和“78da”开始zlib压缩数据之间的字节是多少?

“3080060b2a864886f70d0109100109a0803080020100300f060b2a864886f70d01091003080500308006092a864886f70d010701a080248004820769”

下一个问题,如果我把所有字节都读到最后,最后一个字节是无法解压的。 据我了解,zLib 数据应该以 adler32 校验和结尾,但是如何在不尝试解压缩的情况下识别压缩数据的结尾或长度。 在成功解压缩数据后,我看到了一些尾随字节: “1f9b1f1fcbc51f0482000445a59371” 那是什么?

感谢您的想法!

【问题讨论】:

我在你的例子中没有看到 78 da。 是的,因为这个例子只是mime头和zlib头之间以78开头的部分。它对我来说是未知的。 【参考方案1】:

不解压就找不到压缩数据的结尾。你不需要保存解压的结果,但你至少需要解码所有的压缩数据才能找到它自己终止的地方。

【讨论】:

以上是关于压缩 AS2 主体的主要内容,如果未能解决你的问题,请参考以下文章

Flash ActionScript 2 的压缩和解压缩工具

Flash ActionScript 2的压缩和解压缩工具

实体和编码

http2.0之头部压缩

自动备份压缩文件及其文件夹和文件

如何阻止 html 压缩内容?