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

如何查看字节数组是否包含gzip流? 我的应用程序通过使用Base64编码的http post来从其他应用程序获取文件。 根据提供文件的应用程序的实现,可以对Base64字符串输出的字节数组进行gzip压缩。 我如何识别gzipped数组? 我找到了一些方法,但我认为当某人上传一个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,我的应用程序将解压缩字节数组。


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

链接地址: http://www.djcxy.com/p/16469.html

上一篇: How to tell if a byte array is gzipped

下一篇: Managing large binary files with Git