MCPcopy Create free account
hub / github.com/MearaY/StegaPy / _decompress_data

Method _decompress_data

StegaPy/StegaPy.py:199–236  ·  view source on GitHub ↗

使用 gzip 算法对数据进行解压,并包含基础的数据校验。

(self, data: bytes)

Source from the content-addressed store, hash-verified

197 return gzip.compress(data)
198
199 def _decompress_data(self, data: bytes) -> bytes:
200 """使用 gzip 算法对数据进行解压,并包含基础的数据校验。"""
201 # 检查数据是否为空
202 if not data or len(data) == 0:
203 raise StegaPyException(
204 "数据为空,无法解压",
205 StegaPyErrors.CORRUPT_DATA,
206 self.NAMESPACE
207 )
208
209 # 检查数据是否是有效的 gzip 格式
210 # gzip 文件以 \x1f\x8b 开头
211 if len(data) < 2 or data[:2] != b'\x1f\x8b':
212 raise StegaPyException(
213 "数据不是有效的 gzip 格式。请检查:\n"
214 "1. 嵌入数据时是否启用了压缩\n"
215 "2. 提取数据时的压缩设置是否与嵌入时一致\n"
216 f"数据前2字节: {data[:2].hex() if len(data) >= 2 else '数据太短'}",
217 StegaPyErrors.CORRUPT_DATA,
218 self.NAMESPACE
219 )
220
221 try:
222 return gzip.decompress(data)
223 except gzip.BadGzipFile as e:
224 raise StegaPyException(
225 f"数据解压失败(不是有效的 gzip 文件): {str(e)}\n"
226 "请检查压缩设置是否与嵌入时一致",
227 StegaPyErrors.CORRUPT_DATA,
228 self.NAMESPACE
229 )
230 except Exception as e:
231 raise StegaPyException(
232 f"数据解压失败: {str(e)}\n"
233 "请检查压缩设置是否与嵌入时一致",
234 StegaPyErrors.CORRUPT_DATA,
235 self.NAMESPACE
236 )
237

Callers 3

extract_dataMethod · 0.95
extract_dataFunction · 0.80
extract_dataFunction · 0.80

Calls 1

StegaPyExceptionClass · 0.85

Tested by

no test coverage detected