【发布时间】:2018-01-19 05:04:37
【问题描述】:
我正在尝试扩充 pdf 中的对象流。在对使用 flate 解码压缩的对象流之一进行膨胀时,出现数据错误。
对象流 1339 0 obj^M流^M
^ZÖ¬Áã9^^GÎ^WÊðyMt0Ò=$Ô°¯$ ^M 端流
**加密对象** 1698 0 obj^M"\r^S^LÀõeâJý;Î{dTÔÜ~´>^Tº)/P -1324/R 3/U(É^[®ú^F^C /¬ ®=ÌæZv5');\r\n view(a)/V 2>>^Mendobj
解密后我得到了这个数据 {0x68, 0x16, 0x48, 0x59, 0x11, 0xef, 0x34, 0xe9, 0xd0, 0x79, 0xf6, 0xcb, 0x73, 0xf6, 0x8a, 0x50, 0xed, 0xdc, 0x34, 0xe19, 0x60, 0xb, 0x , 0x92, 0x5, 0x67, 0x60, 0xd9, 0x84, 0x34, 0x44, 0xad, 0xa9, 0x5c} 现在我必须解压缩这些数据。
调用 inflate(&zstrm, Z_FINISH); 后出现数据错误 我被困在这里。谁能帮我理解这个错误。
【问题讨论】:
-
zlib/deflate 流不能以 0x6816 开头,压缩信息超出范围且检查位不匹配(阅读RFC 1950 了解更多详细信息)。你确定你已经正确解密了吗?
-
感谢您的建议@ephemient。在 RFC 1950 位 0 到 3 CM 压缩方法位 4 到 7 CINFO 压缩信息 这个位表示是从左到右还是从右到左?