魔数与文件类型

电脑里很多文件,例如,word,excel,txt,jpg,应用软件怎么区分文件类型呢p>

即使word文档,也是分为doc和docx,编码格式都不一样,office也需要区分不同的类型,再进行解码。

如果把一个word文档的后缀改成jgp,图片软件打开的时候就会 错。但是文件后缀是可以随便更改的,为了规范化,除了文件后缀之外,还需要一个方法来表示文件真正的类型。

魔数(magic number),因此而出现,魔数用于表示不同的文件类型。

在文件开头预留几个字节,存入魔数,应用软件在打开这个文件的时候,就能判断是否是支持的文件类型了。

比如,一个JPEG文件,它开头的一些字节可能是类似这样的”ffd8 ffe0 0010 4a46 4946 0001 0101 0047 ……JFIF…..G“,这里”ffd8“就表示了这个文件是一个JPEG类型的文件,”ffe0“表示这是JFIF类型结构。
魔数作用非常大:

1,有些文件没了后缀,需要先找到具体的类型,修改后缀才能打开。

2,文件操作中为了兼容错误,出现一些异常。例如一个word文档,本来是doc格式,兼容保存为docx后缀,但是实际上格式没变。用office或者wps打开是没问题的,但是自己写代码做点功能的时候,就会遇到问题。

3,web 站文件上传,用户可以将一些可执行的文件更改后缀传输上来,再通过其他办法修改为可执行,这样就是一个安全漏洞了。

例如:

压缩文件

文件类型 扩展名 16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
Bzip .bz 42 5a BZ
Compress .Z 1f 9d ..
gzip format .gz 1f 8b ..
pkzip format .zip 50 4b 03 04 PK..

其他文件有自己的魔数,不一一表述了。

 

判断方法:

1,设置文件输入流。

2,读取前几个字节,获得魔数,以16进制表示。

3,对比,判断类型。

 

具体的代码实现:

 

 

 

 

参考链接:

百科 魔数

https://baike.baidu.com/item/魔数/2464954=aladdin

 

Java 通过魔数判断上传文件的类型

https://blog.csdn.net/ycb1689/article/details/79712623

 

java判断文件的真实类型

https://blog.csdn.net/qq_29663071/article/details/79756381

 

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月4日
下一篇 2019年10月4日

相关推荐