crc32循环冗余矫正与md5的区别

CRC、MD5和SHA1都是数据完整性校验方法,但算法、校验值长度、安全性、效率和用途各有不同。CRC适用于通信数据校验,计算效率高;MD5用于文件校验和安全场景,具有较高安全性;SHA1的安全性最高。MD5码的离散性强,冲突可能性小,而CRC较短,适用于对传输误码的防范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

crc32的意思是
生成 string 参数的 32 位循环冗余校验码多项式……:将字符串转换为数字类型,用于验证数据的完整性
这句话从英文翻译过来的,不正确,准确的说应该是这么理解:
以32位循环冗余校验多项式算法,来计算一个字符串,返回一个(可能带符号的)整数。
他的全称是循环冗余矫正:循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。若CRC校验不通过,系统重复向硬盘复制数据,陷入死循环,导致复制过程无法完成。出现循环冗余检查错误的可能原因非常多,硬件软件的故障都有可能。你可以当做这是一个md5的数学版。
那么,crc32与md5的区别是什么?

相同点:

CRC、MD5、SHA1都是通过对数据进行计算,来生成一个校验值,该校验值用来校验数据的完整性。


不同点:

1. 算法不同。CRC采用多项式除法,MD5和SHA1使用的是替换、轮转等方法;

2. 校验值的长度不同。CRC校验位的长度跟其多项式有关系,一般为16位或32位;MD5是16个字节(128位);SHA1是20个字节(160位);

3. 校验值的称呼不同。CRC一般叫做CRC值;MD5和SHA1一般叫做哈希值(Hash)或散列值;

4. 安全性不同。这里的安全性是指检错的能力,即数据的错误能通过校验位检测出来。CRC的安全性跟多项式有很大关系,相对于MD5和SHA1要弱很多;MD5的安全性很高,SHA1的安全性最高。

5. 效率不同,CRC的计算效率很高;MD5和SHA1比较慢。

6. 用途不同。CRC一般用作通信数据的校验;MD5和SHA1用于安全(Security)领域,比如文件校验、数字签名等。

MD5可靠性
 首先是不可逆
 其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,
 最后由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。

crc比较短,md5比较长
所以md5相对来说冲突的可能性要小很多
如果要求不高,是防范传输误码之类的用crc就可以了,crc效率要高很多
如果要防范人为恶意破坏,需要用md5,慢就慢点,图个可靠性加强

最后再介绍两个函数

fmod()用来对浮点数进行取模(求余),原型为:float fmod(float x)。这是取模求余的一个函数,相当于7%6=1  8%4=0  3%4=3  3%6=3

3%7=3

php中abs()函数是求取一个数的绝对值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值