CRC32 计算不成功

Posted

技术标签:

【中文标题】CRC32 计算不成功【英文标题】:CRC32 calculation not working out 【发布时间】:2013-07-08 12:27:18 【问题描述】:

我试图了解以太网 CRC-32 的工作原理,但遇到了一些问题。我查看了一个具有十六进制值的 ARP 请求:

00000024e8cc96beffffffffffff080600010800060400010024e8cc96be0a3307fa0000000000000a3307fb000000000000000000000000000000000000ff0fdca

并将其放入众多在线生成器之一中,但无法使 CRC 匹配。在我看来,前两个字节(0x00 0x00)是帧的开头,最后四个字节(0x0F 0xF0 0xFD 0xCA)是CRC,但是当我将中间字节放入在线时,我无法计算发电机。

知道我猜错了什么吗?

【问题讨论】:

你是如何计算它的,一个脚本,还是用某种语言编写的应用程序? 我最终会在 FPGA 上进行,但现在我只是想理解它,所以我将其复制并粘贴到一些在线脚本中,例如:crc32-checksum.waraxe.us 和 lammertbies.nl/comm/info/crc-calculation.html 没关系,我搞错了。我一直在寻找在FPGA的回环代码,真正的ARP看起来像:0000ffffffffffff0024e8cc96be080600010800060400010024e8cc96be0a3307fa0000000000000a3307fb0000000000000000000000000000000000000ff0fdca(src和DST MAC被交换)。如果我将 0000 之后和 ff0fdca 之前的所有内容放入上面的第二个链接中,我会得到 0xCAFDF00F,它是相同的 CRC(只是反向字节顺序)。所以如果你从一开始就使用正确的数据是有意义的..... 是的,我想告诉你,但不确定,我认为这可能是错误的结果,因为有两种不同类型的 CRC。很好,你发现了 然后回答你自己的问题。 【参考方案1】:

我原来的帖子有误。我在看 FPGA 的回环响应,真正的 ARP 看起来像:

0000ffffffffffff0024e8cc96be080600010800060400010024e8cc96be0a3307fa000000000000‌0a3307fb000000000000000000000000000000000000ff0fdca

(交换 src 和 dst mac)。如果我将 0000 之后和 ff0fdca 之前的所有内容放入我在问题中列出的第二个链接中,我会得到 0xCAFDF00F 作为 CRC,这与最初在 ARP 请求中发送的相同(只是以反向字节顺序)。因此,如果您从一开始就使用正确的数据是有意义的......

【讨论】:

以上是关于CRC32 计算不成功的主要内容,如果未能解决你的问题,请参考以下文章

CRC32的计算方法

CRC32算法笔记

crc32 — 计算一个字符串的 crc32 多项式?

如何用 Python 计算 CRC32 以匹配在线结果?

如何从 linux bash 上的字符串计算 crc32 校验和

CRC32计算JavaScript实现代码