CRC和校验和有什么区别?

时间:2010-07-28 20:09:38

标签: networking

CRC和校验和有什么区别?

4 个答案:

答案 0 :(得分:25)

CRC (Cyclic Redundancy Check)是一种checksum,特别是位置相关的校验和算法(其中包括Fletcher's checksumAdler-32)。正如他们的名字所暗示的那样,这些也检测到位置变化,这使得它们比其他校验和方法更加健壮 - 因此使用得更广泛。

答案 1 :(得分:13)

CRC是指特定的校验和算法。其他类型的校验和是XOR,模数和所有各种加密哈希值。

答案 2 :(得分:10)

查看HowStuffWorks,了解两者及其差异的详细说明。

从页面:

循环冗余校验(CRC)

  

CRC在概念上与校验和类似,但它们使用多项式除法来确定CRC的值

上面的链接提供了更多信息,包括如何计算校验和的示例。

答案 3 :(得分:3)

杰夫阿特伍德(Stack Overflow的创始人)在他的Checksums and Hashes博客文章中写道:

  

我学会了在我的8位,300波特文件传输日中欣赏循环冗余校验(CRC)算法的价值。如果本地文件的CRC与存储在文件(或服务器)中的CRC匹配,则我有一个有效的下载。当我下载一个带有匹配的CRC损坏的文件时,我也学到了pigeonhole principle的一些内容!

checksumerror-detection scheme,通常是指加密哈希函数,但它也包含CRC。以下是三种不同类型的校验和:

Cyclic Redundancy Checks一样

CRC32 速度快,但容易发生碰撞。它们对collision attacks不稳健,这意味着有人可以采用给定的CRC并轻松地获得匹配它的第二个输入。

Cryptographic hash functions ,例如MD5(较弱),SHA1(弱)和SHA256(强)专门设计为对碰撞袭击。除速度外,它们在各种情况下都优于CRC;使用你可以计算得出的最强算法。

Key derivation functions ,例如PBKDF2bcrypt是专为密码设计的。它们是校验和,计算成本高,因此它们对brute-force attacks具有鲁棒性。

另见Crypto.SE question on CRC vs SHA1。维基百科有一个hash function security summary页面,讨论了各种加密哈希的碰撞倾向。