效率不同:
直接看代码
import zlib
import hashlib
import timewith open(r'D:\data.', 'rb') as f:x = f.read()s = time.time()
for i in range(100000):d = zlib.crc32(x)
print(time.time() - s)s = time.time()
for i in range(100000):m = hashlib.md5()m.update(x)d = m.hexdigest()
print(time.time() - s)s = time.time()
for i in range(100000):sha1 = hashlib.sha256()sha1.update(x)d = sha1.hexdigest()
print(time.time() - s)
执行结果

原因:
crc的运算结果是32位
md5的运算结果是128位
sha有很多种 sha1是160位
也可以从算法里判断, 但是这里就不深入讨论了
适用场景不同
crc: 是多项式除法, 线性结构, 如果连续出错, 出错次数达到一定次数时,几乎可以肯定出现一次碰撞(数据不对, 但是结果一样), 所以一般适用于通信数据校验, 因为简单时间快, 准确度没那么高要求md5: 可靠性更高, 一般适用于本地文件校验,网络传输大文件的校验等, 因为可靠性更高, 并且效率要比sha系列算法快sha: 可靠性比md5高, 但是效率低, 所以一般适用于数字证书等对效率要求没那么高的场景