C# 如何知道以base64字符串加密的文件类型

C# 如何知道以base64字符串加密的文件类型,c#,base64,decode,decoder,C#,Base64,Decode,Decoder,我有一个base64解码器的任务。正如您所知,base64不包含任何有关源文件名的信息,但前5个符号确实包含有关文件类型的信息。我已经有了一个从base64字符串返回类型的函数。给你 string GetFileTypeByBase64(string base64) { var data = base64.Substring(0, 5); switch (data.ToUpper()) { case &quo

我有一个base64解码器的任务。正如您所知,base64不包含任何有关源文件名的信息,但前5个符号确实包含有关文件类型的信息。我已经有了一个从base64字符串返回类型的函数。给你

    string GetFileTypeByBase64(string base64)
    {
        var data = base64.Substring(0, 5);
        switch (data.ToUpper())
        {
            case "IVBOR":
                return ".png";
            case "/9J/4":
                return ".jpg";
            case "AAAAI":
                return ".mp4";
            case "JVBER":
                return ".pdf";
            case "AAABA":
                return ".ico";
            case "UMFYI":
                return ".rar";
            case "E1XYD":
                return ".rtf";
            case "U1PKC":
                return ".txt";
            case "MQOWM":
            case "77U/M":
                return ".srt";
            default:
                return "." + data;
        }
    }
这里是我的问题:我如何知道base64字符串中的文件是mp3还是wav?
(如果您提供其他文件类型符号,我们将不胜感激)

关于您的switch语句,WAV文件的字符串为“UklGR”,MP3文件的字符串为“SUQzB”


这些字符串是文件本身的字节,因此该字符串基本上是文件头的第一部分。

但前5个符号确实包含有关文件类型的信息,这只是正确的一半。事实上,base64只包含原始文件的编码字节,没有自己的头。许多文件格式的文件头通常以某个字节序列开头,因此base64编码的字符串也以某个序列开头。例如,每个base64编码png以“iVBOR”开头。另请参阅。当您理解这一点时,您可以很容易地找到每个具有固定头的文件类型。要么在谷歌上快速搜索文件格式,要么对一些相同类型的文件进行编码,看看结果是否总是以相同的字符开头。这能回答你的问题吗?