md5,sha1,sha256属于密码级散列函数,算法相对比较复杂,参与加密算法的过程中时也比较安全。crc只是专用的校验散列函数,算法相对比较简单。
安全级别不同也导致输出长度
常用的CRC32 只输出32bit
MD5输出128bit
SHA1输出160bit
SHA256输出256bit
这也反映了复杂度和安全要求的递增。
对安全要求的不同导致他们的“应用场景就不同”:
对密码用CRC32就很不安全,普通密码可以用MD5,但数字证书和数字签名就法定必须用SHA256,
对普通数据效验完整性也没必要用SHA1,SHA256这样计算相对复杂的算法,会慢很多。