正因为CRC具有以上特点,对于网络上传输的文件类很少只使用CRC作为校验依据,文件传输相比通信底层传输风险更大,很容易受到人为干预影响。
MD5全称为Message-Digest Algorithm 5,又叫摘要算法和哈希算法。
MD5由MD4、MD3、MD2改进而来,MD5散列长度通常是128位,是目前被大量广泛使用的散列算法之一,主要用于密码加密和文件校验等,虽然MD5比CRC的安全可靠性要高的多,但目前已经找到可行的破解方法。现在网上虽然出现有些破解网站和软件,不过可以肯定实际作用范围相当有限,比如,即使黑客拿到了PASSWORD MD5值,除了暴力破解,即使找到碰撞结果也未必能够影响用户安全问题,因为对于密码还要限定位数、类型等,但是如果是面向数字签名等应用,可能就会被破解掉。
SHA全称为Secure Hash Algorithm,又叫安全散列算法。SHA家族算法有SHA-1、SHA-224、SHA-256、SHA-384和SHA-512(后四者通常并称SHA2),原理和MD4、MD5相似。SHA可将一个最大2^64位(2305843009213693952字节)信息,转换成一串160位(20字节)的散列值(摘要信息),是目前应用最广的HASH算法。同MD5一样,从理论角度,SHA1也不是绝对可靠,目前也已经找到SHA1的碰撞条件,但“实用”的碰撞算法软件还没出现。于是美国NIST又开始使用SHA2,研究更新的加密算法。
补充:虽然目前这几种校验算法都找到了破解条件,但像目前主流使用的MD5、SHA1还是值得信赖的,因为MD5和SHA1都具有高度的离散性,哪怕是只修改一个字节值都会导致MD5或SHA1值“巨大”变化,从实践角度,不同信息具有相同MD5或SHA1码的可能性非常低,通常认为是不可能的,对于普通的下载文件或操作系统,想通过简单的修改某个字节或某些字节,又要保证文件名、大小和安装可靠性的前提下,想达到MD5、SHA1碰撞效果也几乎是不可能的。

搜一下:一致性hash算法,采用哪种算法实现比较好,比如MD5,CRC32,或者其它
烟花易冷3971624