计算机领域的魔数

最后更新: 2026-08-12

今天也是又看到一个很有趣的新词汇"魔数"。

在计算机领域,魔数是指文件开头的固定几个字节,用来唯一标识文件类型。可以把它理解为文件的“身份证号”或“胎记”。

例如:

  • PNG图片的开头固定是 89 50 4E 47(十六进制),对应ASCII字符是 .PNG
  • JPEG图片的开头固定是 FF D8 FF
  • GIF图片的开头固定是 47 49 46 38(对应字符 GIF8)。

而我今天遇到的bug一句话也就是:“没有根据文件魔数识别真实图片格式,导致文件导出失败。“

当然重点是前半句,这是一种安全检测手段,系统会打开文件的二进制数据,只看最前面的那几个字节,然后问:“这个魔数是PNG的吗?是JPEG的吗?”如果是,就认定它是这种格式。

那么为什么要做这件事呢?就好比黑客将一个可能的恶意执行文件(.exe)改名为美女.jpg给你,但图片查看器根本打不开他。而如果加上“魔数识别”工具,它一查看开头字节4D 5A(exe文件魔数),立马就能识别:“啊,这是个程序!不是图片”