如何判断字节数组是否被 gzip 压缩

本文关键字:是否 数组 gzip 压缩 字节数 字节 何判断 判断 | 更新日期: 2023-09-27 18:35:21

如何查看字节数组是否包含 gzip 流?我的应用程序通过带有 Base64 编码的 http post 从其他应用程序获取文件。根据传递文件的应用程序的实现,可以对来自 Base64 字符串的字节数组进行 gzip 压缩。如何识别压缩数组?我找到了一些方法,但我认为当有人上传 zip 文件或准备好的"坏"zip 文件时它会出错

这就是我发现并有效的,但是可以以某种方式利用它吗?

C#

public static bool IsGZip(byte[] arr)
{
    return arr.Length >= 2 && arr[0] == 31 && arr[1] == 139;
}

VB.NET

Public Shared Function IsGZip(arr As Byte()) As Boolean
    Return arr.Length >= 2 AndAlso arr(0) = 31 AndAlso arr(1) = 139
End Function

如果 IsGzip 返回 true,我的应用程序将解压缩字节数组。

如何判断字节数组是否被 gzip 压缩

做你正在做的事情,检查第三个字节是否为 8,然后尝试压缩它。 最后一步是真正了解的唯一途径。 如果 gunzip 失败,则按原样使用流。