Pét*_*rök 27
CRC(循环冗余校验)是一种校验和,特别是位置相关的校验和算法(其中包括Fletcher的校验和,Adler-32).正如他们的名字所暗示的那样,它们也会检测位置变化,这使得它们比其他校验和方法更加健壮 - 因此使用得更广泛.
TLi*_*ebe 11
查看HowStuffWorks,了解它们的不同之处以及它们之间的区别.
从页面:
循环冗余校验(CRC)
CRC在概念上与校验和类似,但它们使用多项式除法来确定CRC的值
更多信息在上面的链接中给出,包括如何计算校验和的示例.
Jeff Atwood(Stack Overflow的创始人)在他的Checksums和Hashes博客文章中写道:
我学会了欣赏循环冗余校验(CRC)算法在我的8位300波特文件传输日中的价值。如果本地文件的CRC与存储在文件中(或服务器上)的CRC匹配,则我进行了有效下载。当我下载带有损坏的匹配CRC的文件时,我还学到了一些有关信鸽原理的知识!
甲校验是一个错误检测方案,其通常指的是加密散列函数,但它也包括CRC。这是三种不同的校验和类型:
像 CRC32这样的循环冗余校验速度很快,但是容易发生冲突。它们对碰撞攻击的鲁棒性不强,这意味着某人可以获取给定的CRC并轻松获得与其匹配的第二个输入。
诸如 MD5(较弱), SHA1(较弱)和 SHA256(较强)之类的加密哈希函数是专门设计用于抵抗冲突攻击的。在速度以外的所有情况下,它们都比CRC更可取。使用您可以通过计算获得的最强大的算法。
诸如 PBKDF2和 bcrypt之类的密钥派生功能是为密码设计的。它们是校验和,计算成本很高,因此对于蛮力攻击很健壮。
另请参阅有关CRC vs SHA1的Crypto.SE问题。Wikipedia的哈希功能安全摘要页面讨论了各种加密哈希的碰撞倾向性。