Magic Number魔数是什么_crc的 magic number-程序员宅基地

技术标签: magic number  编程  日常记录  

在网上查magic number的相关介绍的时候,看到很多人的博客中说magic number之所以叫magic number,就是因为我们并不知道它有什么含义。。。


最后看了知乎上的回答:

Magic number一般是指硬写到代码里的整数常量,数值是程序员自己任意设置的,其他人并不知道数值有什么具体意义(可能过一段时间,编程者本人也忘了其具体含义了。。。),表示不明觉厉,就称作magic number。

举了例子:

ELF文件头会写入一个magic number,检查这个数和自己预想的是否一致可以判断文件是否损坏。
在缓冲区数组旁放一个magic number(称作canary金丝雀),通过检查是否一致可检测缓冲区溢出攻击。


另外维基百科上提到了很多含有magic number的文件格式:

1. 一些图像文件中存在的魔数。比如,bmp文件中的'BM',JPEG/JFIF中的'JFIF',等等。
2. 某些格式的声音、视频文件中存在中的魔数。
3. PE文件、ELF文件中存在的魔数。
4. 各种文本编码中的BOM也可以看做魔数。比如UTF-8、UTF-16、UTF-32的BOM。

此外,Linux中的file命令,是根据文件中的魔数来判断文件类型,这要优于使用文件后缀来进行判断。(似乎是magic number的另一个用处)

对于知乎上回答的例子,magic number就是对你要处理的一段数据,最初进行的一个粗略判断。主要是怕处理了半天,原来输入是段垃圾,浪费自己时间,甚至把自己程序搞奔溃。你可以认为,magic number读到是对的,你有就有99%的信心,这个数据应该不是垃圾,值得分析。但是真要保证这个数据是99.9999999%正确的,恐怕还是要CRC甚至数字签名才行。


参考:https://www.zhihu.com/question/22018894

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/abcdyzhang/article/details/56331492

智能推荐

OSChina 周二乱弹 —— 这简直是对佛祖的DDoS攻击啊-程序员宅基地

文章浏览阅读364次。2019独角兽企业重金招聘Python工程师标准>>> ..._佛祖ddos攻击

spring boot项目引入feign_引入feignclient的pom-程序员宅基地

文章浏览阅读1.3k次。1.pom文件加入如下内容<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId></dependency>2.在主类中加入如下注解@EnableFei..._引入feignclient的pom

ingress-nginx-检查控制器的状态以及访问统计数据_nginx-ingress怎么查看状态-程序员宅基地

文章浏览阅读1.7k次。1. 手动查询状态:1.1 查看ingress控制器的配置:$ kubectl get po -o wide -n ingress-nginxNAME READY STATUS RESTARTS AGE IP NODEnginx-ingress-contro..._nginx-ingress怎么查看状态

如何将图片转换base64格式?data:image/png;base64又是什么?_ivborw0kggo-程序员宅基地

文章浏览阅读2.7w次,点赞3次,收藏11次。一、我们在看代码时经常在img或css背景图片中看到: src=”data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOus bgAAAAeFBMVEUAwAD///+U5ZTc9twOww7G8MYwzDCH4==”src或 url() 中有一大串编码。它把一些 8-bit 数据翻译成标准 ASCII 字符,网上有很多..._ivborw0kggo

np 数组转为普通数组_Python Numpy 数组操作 (一)-程序员宅基地

文章浏览阅读1.9k次。修改数组形状numpy.reshapenumpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下: numpy.reshape(arr, newshape, order='C')arr:要修改形状的数组newshape:整数或者整数数组,新的形状应当兼容原有形状order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。impor..._numpy数组转换为普通数组

echarts雷达图点击事件 包含(2.x,3.85,4.02)测试-程序员宅基地

文章浏览阅读412次。最近看见别人问的问题,点击雷达图的拐点,获取点击数据的问题,直接上代码。echarts 2x 的点击事件echarts配置问题:https://www.douban.com/note/509404582/<!doctype html><html lang="us"><head> <meta charset="utf-8"&g..._echarts5.2 雷达图监听事件

随便推点

Xcode6 里添加.pch文件-程序员宅基地

文章浏览阅读395次。1.创建一个pch文件。(不多赘述了)2.project ---> Tages --->buildSetings --->prefix Header 里输入 $(SRCROOT)/youProjectName/yourPchName.pch 。(建议pch名称与工程名称相同) ******如果编辑无法通过:检查,pch是否在,创建工程时所创建的与工程同名的文件目录里,否则无法通过

SystemUI 快速搞懂启动流程_systemui中override dump-程序员宅基地

文章浏览阅读647次,点赞2次,收藏4次。SystemUI,系统界面,一个系统级的应用,其中包括了很多功能模块,比如锁屏,状态栏,分屏,音量条,多任务等等,让我们一起看一下它的启动.随着系统的启动通过调用第一个用户空间的init进程调用Zygote进程然后调用SystemServer启动各种系统服务,而我们的SystemUI在其中启动服务中的一项.一.SystemServer中的启动代码路径:frameworks/base/ser..._systemui中override dump

Linux下编程------文件与IO(三) 文件共享和fcntl函数_文件io 文件共享-程序员宅基地

文章浏览阅读164次。文件共享一个进程打开了两个文件文件表条目(file-table-entry): 1.文件状态标志(file-status-flags): 读/写/追加/同步/非阻塞等; 2.当前文件偏移量 3.v节点指针[cpp] view plaincopy//验证 int main(int argc, char *argv[]) { int fd1 = open("test.txt"..._文件io 文件共享

单链表的基本操作_7-1 单链表基本操作-程序员宅基地

文章浏览阅读491次。int data;以上内容是对单链表的基本操作,包好对单链表的增删查。子函数中的输入和输出可根据需要放到主函数中。_7-1 单链表基本操作

module ‘torch’ has no attribute ‘xxx’ 问题_module 'torch' has no attribute 'frombuffer-程序员宅基地

文章浏览阅读3.6w次,点赞8次,收藏5次。import torch出现错误:module ‘torch’ has no attribute 'from_numpy’刚接触torch,好不容易安装成功(pip install torch1.5.1+cpu torchvision0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html),cpu版本,打开发现这样问题:module ‘torch’ has no attribute ‘from_numpy’心情很是糟糕,求助了淘_module 'torch' has no attribute 'frombuffer

UML中数据流图,用例图,类图,对象图,角色图,活动图,序列图详细讲述保存供参考...-程序员宅基地

文章浏览阅读281次。http://www.cnblogs.com/macou/archive/2009/02/18/1392903.html 收集五年的开发资料下载地址: http://pan.baidu.com/share/home?uk=4076915866&amp;view=share类图,对象图,角色图:一、UML中基本的图范畴:在 UML 2 中有二种基本的图范畴:结构图和行为图。每个 ..._数据库流图还有什么图