检查文件的字节数是否足够



出于安全目的,我试图通过其字节来验证该文件是.rar文件。以下代码是我的代码,唯一的问题是子标题与从文件生成的子标题不匹配。我注意到不同的文件是不同的。你能给我解释一下原因吗?

 static bool IsRARFile(string filePath)
    {
        bool isDocFile = false;
        //
        // File sigs from: http://www.garykessler.net/library/file_sigs.html
        //
        string msOfficeHeader = "52-61-72-21-1A-07-00-CF";
        string docSubHeader = "64-2E-63-73";
        using (Stream stream = File.OpenRead(filePath))
        {
            //get file header
            byte[] headerBuffer = new byte[8];
            stream.Read(headerBuffer, 0, headerBuffer.Length);
            string headerString = BitConverter.ToString(headerBuffer);
            if (headerString.Equals(msOfficeHeader, StringComparison.InvariantCultureIgnoreCase))
            {
                //get subheader
                byte[] subHeaderBuffer = new byte[4];
                stream.Seek(512, SeekOrigin.Begin);
                stream.Read(subHeaderBuffer, 0, subHeaderBuffer.Length);
                string subHeaderString = BitConverter.ToString(subHeaderBuffer);
                if (subHeaderString.Equals(docSubHeader, StringComparison.InvariantCultureIgnoreCase))
                {
                    isDocFile = true;
                }
            }
        }
        return isDocFile;
    }

这是因为您刚刚为不同的文件类型从某处复制了一个函数,并不是每个文件类型都有任何"子标题"的概念。在RAR的情况下,您只需要检查主标题。

我还建议修改变量的命名,如果一个函数说它正在检查RAR类型,并且内部所有变量都引用DOCs,这是相当混乱的。

相关内容

  • 没有找到相关文章

最新更新