如何用其他数据替换 gzip 压缩数据并且仍然有有效的 .gz 文件?

Posted

技术标签:

【中文标题】如何用其他数据替换 gzip 压缩数据并且仍然有有效的 .gz 文件?【英文标题】:How to replace gzip compressed data with other data and still have a valid .gz file? 【发布时间】:2021-03-03 22:03:42 【问题描述】:

我正在试验。我创建了一个带有单词hi 的.txt 文件并运行gzip test.txt 来压缩它。 这给了我一个包含以下字节的文件 test.txt.gz:

1F 8B 08 08  E6 E8 3F 60  00 03 62 2E  74 78 74 00
CB C8 04 00  AC 2A 93 D8  02 00 00 00

用软件101编辑器发现第一行就是表头。

CB C8 04 00是压缩后的数据

AC 2A 93 D8是“数据段的CRC”

02 00 00 00 是“未压缩输入的大小”

我正在尝试做什么(我什至不知道这是否可能):我希望将自己的字符作为“压缩”数据,但希望 .gz 文件仍然有效。

我尝试将CB C8 04 00 替换为62 62 62 62(字母'b' 4 次),但该文件无效。然后我尝试用“bbbb”的CRC32值替换AC 2A 93 D8,但文件仍然无效。我解压不了运行 gzip -d test.txt.gz 会返回“意外的文件结尾”。

这可能是我想要做的吗?如果是:我做错了什么?

【问题讨论】:

【参考方案1】:

CB C8 04 00 是一个有效的放气流。 62 62 62 62 不是。 gzip 成员是一个 gzip 标头、一个有效的 deflate 流和一个 gzip 预告片。

Deflate 流在 RFC 1951 中定义。

【讨论】:

以上是关于如何用其他数据替换 gzip 压缩数据并且仍然有有效的 .gz 文件?的主要内容,如果未能解决你的问题,请参考以下文章

XML 和 .NET:如何用从原始 xml 数据加载的许多其他节点替换特定节点

如何用vcftools从VCF文件中提取某条染色体信息

如何用同一数据框中其他列的实际列值替换一列中的字符串值?

如何用该表唯一的不同整数替换 Django 的主键

如何用熊猫(python)中的其他值替换NAN [重复]

如何用python中其他数据帧中的条目替换一个数据帧中列的丢失条目?