【问题标题】:Compressed AS2 Body压缩 AS2 主体
【发布时间】: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开头的部分。它对我来说是未知的。

标签: zlib mime deflate adler32


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多