提出问题
数据信息在传输过程中有时会受到外界有意或无意的干扰行为,数据遭到 篡改 或 破坏,造成数据接收端,与发送端不一致
解决
采用 CRC 进行数据校验
介绍
CRC,Cyclic Redundancy Check,循环冗余校验
是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术
主要用来检测或校验数据传输或者保存后可能出现的错误
应用场景
在数据存储和数据通讯领域,为了保证数据的正确,采用 CRC 进行数据校验
- 通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT
- WinRAR、NERO、ARJ、LHA等压缩工具软件采用的是CRC32
- 磁盘驱动器的读写采用了CRC16
- 通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段
特点
检错能力强,开销小,易于用编码器及检测电路实现
不能发现的错误的几率仅为0.0047%以下
从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式
版本
- CRC-8
- CRC-12
- CRC-16,应用:USB
- CRC-CCITT,应用:X.25
- CRC-32,应用:ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394
- CRC-32C,应用:ext4
实现原理
https://blog.csdn.net/d_leo/article/details/73572373
在线计算
https://www.lddgo.net/encrypt/crc
CRC 与 MD5、SHA1 比较
相同点
CRC、MD5、SHA1都是通过对数据进行计算,来生成一个校验值,该校验值用来 校验数据的完整性。
不同点
算法不同。CRC采用多项式除法,MD5和SHA1使用的是替换、轮转等方法;
校验值的长度不同。CRC校验位的长度跟其多项式有关系,一般为16位或32位;MD5是16个字节(128位);SHA1是20个字节(160位);
校验值的称呼不同。CRC一般叫做CRC值;MD5和SHA1一般叫做哈希值(Hash)或散列值;
安全性不同。这里的安全性是指检错的能力,即数据的错误能通过校验位检测出来。CRC的安全性跟多项式有很大关系,相对于MD5和SHA1要弱很多;MD5的安全性很高,不过大概在04年的时候被山东大学的王小云破解了;SHA1的安全性最高。
效率不同,CRC的计算效率很高;MD5和SHA1比较慢。
用途不同。CRC一般用作通信数据的校验;MD5和SHA1用于安全(Security)领域,比如文件校验、数字签名等。
参考:
https://baike.baidu.com/item/CRC/1453359
https://blog.csdn.net/zipack/article/details/77834158