我正在努力解压来自BizTalk服务器的AS2请求的Zlib压缩的Mime正文。
问题是:
我收到的HTTP正文看起来和预期的一样。我可以读取ASCII编码的Mime头:
“内容类型: application/pkcs7-mime;smime-type=压缩数据;name=smime.p7m\r\n内容传输编码:二进制\r\n\r\n”
以两个换行符结束,我期待后面的压缩正文。但是,当我使用Ionic.Zlib ZlibStream.UncompressBuffer()解压缩以下字节时,它抛出了一个错误。
Zlib报头可以例如通过十六进制编码字节"78da“来标识。当我从那里开始解压它时,它工作得很好。
结束mime报头的两个换行符和开始zlib压缩数据的"78da“之间的字节数是多少?
"3080060b2a864886f70d0109100109a0803080020100300f060b2a864886f70d01091003080500308006092a864886f70d010701a080248004820769“
下一个问题,如果我把所有的字节读到最后,最后的字节不能被解压缩。据我所知,zLib数据应该以adler32校验和结尾,但是我如何在不尝试解压缩的情况下识别压缩数据的结尾或长度。在解压成功的数据后,我看到一些尾随的字节:"1f9b1f1fcbc51f0482000445a59371“这是什么?
谢谢你的点子!
发布于 2021-05-27 02:25:14
如果不解压,您将无法找到压缩数据的结尾。您不需要保存解压缩的结果,但您至少需要对所有压缩数据进行解码,以便找到它自我终止的位置。
https://stackoverflow.com/questions/67695642
复制相似问题