【发布时间】:2011-03-22 09:16:18
【问题描述】:
CRC和校验和有什么区别?
【问题讨论】:
标签: networking
CRC和校验和有什么区别?
【问题讨论】:
标签: networking
CRC (Cyclic Redundancy Check) 是checksum 的一种类型,具体来说是一种位置相关 校验和算法(其中包括Fletcher's checksum、Adler-32)。正如它们的名字所暗示的那样,这些方法也可以检测位置变化,这使得它们比其他校验和方法更强大,因此使用更广泛。
【讨论】:
CRC 是指一种特定的校验和算法。其他类型的校验和是 XOR、模数和所有各种加密哈希。
【讨论】:
查看HowStuffWorks 了解两者以及它们之间的区别。
从页面:
循环冗余校验 (CRC)
CRC 在概念上类似于校验和,但它们使用多项式除法来确定 CRC 的值
以上链接提供了更多信息,包括如何计算校验和的示例。
【讨论】:
Jeff Atwood(Stack Overflow 的创始人)在他的 Checksums and Hashes 博客文章中写道:
在我的 8 位 300 波特文件传输天数中,我学会了欣赏循环冗余校验 (CRC) 算法的价值。如果本地文件的 CRC 与存储在文件(或服务器上)中的 CRC 匹配,则我有一个有效的下载。当我下载一个匹配的 CRC 已损坏的文件时,我还了解了一些关于 pigeonhole principle 的知识!
checksum 是 error-detection scheme,通常指的是加密哈希函数,尽管它也包括 CRC。以下是三种不同类型的校验和:
Cyclic Redundancy Checks 和CRC32 一样,速度快但容易发生冲突。它们对collision attacks 并不健壮,这意味着有人可以获取给定的 CRC 并轻松获得与之匹配的第二个输入。
Cryptographic hash functions 如MD5(较弱)、SHA1(较弱)和SHA256(强)专门设计用于抵抗碰撞攻击。在除速度之外的所有情况下,它们都优于 CRC;使用计算能力最强的算法。
Key derivation functions 像 PBKDF2 和 bcrypt 是为密码设计的。它们是计算成本高昂的校验和,因此它们对brute-force attacks 具有鲁棒性。
另见Crypto.SE question on CRC vs SHA1。维基百科有一个hash function security summary 页面,讨论了各种加密哈希的冲突倾向。
【讨论】: