问题标签 [crc16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
680 浏览

crc - 多个小型 CRC 校验还是单个大型 CRC 校验?

假设我有 L = 1024 位来保护使用 16 个额外位的 CRC 校验。我可以选择使用 16 CRC-1(单奇偶校验)或 CRC-16 校验。就错误检测能力而言,哪个选项更好?

对于 16 CRC-1,如果任何 CRC-1 失败,我们的错误将被声明。换句话说,要通过 CRC 校验,所有的 CRC-1 校验都应该通过;否则,将声明错误。

多CRC-1系统实现如下。1024 位分为 16 组,每组 64 位,每个 16 位组附加一个奇偶校验位。

0 投票
3 回答
3350 浏览

java - Java 16bit CRC 数据包验证

我有一个通过 GPRS 从设备接收的 Avl 数据包。

协议手册说数据包的最后 4 个字节有 16 位 CRC,并给出了 CRC 计算的源代码:

所以我得到了数据包发送给我的 CRC 编号,然后我为存储数据包的字节数组调用 getCrc16,然后比较这两个数字对吗?

这是我在程序中使用的代码:

toBinaryString() 将一个字节转换为它的二进制文件并将其放入一个字符串中!

所以我通过手册中给我的 getCrc16() 来计算 CRC。然后在数据包结束前获取 4 个字节的索引,这样我就可以读取最后 4 个字节并获得与数据包一起发送的 CRC!

for 循环获取每个最后一个字节,并使用 toBinaryString() 将所有这些字节以二进制形式组合成一个字符串!所以我得到了类似 0000000000000000101011011101001 的内容(手册指出前两个字节始终为零,因为它是 16 位 CRC)

所以我只是将二进制字符串解析为有符号整数并比较两个 CRC……!

然而我得到的结果如下:

计算出的 CRC= 21395 -----收到的 CRC= 30416

或者

计算的 CRC= 56084 -----收到的 CRC= 10504

我已经测试了很多数据包,它们不可能都丢失数据。我也在解析数据,所以我知道我得到的数据是正确的!

我在这一切中缺少什么?

0 投票
2 回答
2640 浏览

python - 如何在 Python 中从十六进制系列转换 CRC 16

我有一系列十六进制字节:

我需要计算它的 CRC 16。在线计算器给了我:

我使用 crcmod python 模块如下:

我如何将此十六进制系列表示为 ascii 字符串(该函数需要该字符串)

谢谢!

0 投票
3 回答
2551 浏览

python - 为什么python中CRC16的这种计算有区别?

我会说这段代码会提供三次相同的输出,但它不会:

请解释!

0 投票
4 回答
2121 浏览

java - 在没有 unsigned int 的情况下将 CRC16 函数从 C 转换为 JAVA 的问题

我必须为固件更新创建一个 CRC16 校验和。当我发送此数据时(从十六进制字符串转换为字节 [])

020000810000120000000002F001128100000C9462050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9481050C9

我从控制器得到以下 CRC16

-17514

现在我尝试在 Java 中检查这一点,但我无法获得相同的值。

这是 C 中的原始函数:

这是我在java中转换的函数:

...但它不起作用。它出什么问题了?

0 投票
4 回答
7191 浏览

security - 20 字节数据发生 CRC16 冲突的可能性有多大?

我正在开发一个系统,该系统需要存储一个 20 字节的结构的哈希,长度可能更短。但是,为了优化在一系列哈希中查找哈希的过程,我们希望尽可能地减小哈希的大小。

所以我的问题是,我们输入 crc16 哈希的数据量与其与另一个相同长度条目发生冲突的概率之间是否存在关系?如果是这样,哪个是最优化的长度?

18 个字节在 ascii 表中(az,0-9),其余的范围在 0 到 10 之间

0 投票
2 回答
16648 浏览

php - 如何在php中计算crc16

我需要帮助将用 Ojective C 编写的 CRC 代码转换为 PHP。以下是Objective C代码

以下是我到目前为止在 php 中编写的代码

其中 $strMessage 包含打包的值,但它没有给出正确的结果。

任何帮助将不胜感激。

0 投票
1 回答
1121 浏览

checksum - 解释这个 CRC16 校验和函数

我有一个用于 255 字节数据的 CRC16 校验和的功能。

校验和从第一个字节到倒数第三个字节计算。您能说出这些代码中发生了什么,特别是“ekmCheckCrc”函数吗?下面是我得到的功能。

0 投票
0 回答
679 浏览

java - Ajax / JSON 数据传输中断,更改了我的 Unicode 数据并破坏了我的 CRC 计算

我是一个接单网站的开发人员。它有一个Tomcat/Java后端并JavaScript在浏览器上广泛使用。我的程序管理与我们的用户的对话,内容涉及我们内部系统成功下订单所需的大量数据。我们所有的对话都使用该HTTPS协议。

不久前,我们曾经接受我们的表单数据(一个Struts应用程序),对其进行处理并再次将其作为表单返回。我注意到一些数据丢失错误。使用 的扩展HttpServletRequestWrapper,我可以看到某些用户缺少表单数据。到处都是订单项,非常令人痛苦。我们的数据应该是单一的。

因此,在最近的一次修订中,表单正在通过 Ajax 对话来回传输,使用JSON. 我们将表单数据转换为字符串,从中创建一个 CRC 和,然后将这两者包装到一个载体JSON对象中。另一方将提取表单数据字符串,应用相同的CRC转换,然后比较两个值。一切都很好,但是...

我发现我的CRC生成取决于数据字符串是否包含“高位”字符——默认情况下你从程序中得到的东西Microsoft Word,比如句子周围的那些花哨的双引号、外语元音等等。似乎底层的传输机制破坏了一些东西。

例如,如果我传回预格式化的 HTML,则正斜杠如

在过程中转化为

这不校验和相同。我可以检查额外的反斜杠,但我对传输机制任意重新格式化文本感到沮丧。

再举一个例子,我JSON在服务器上有一些数据:

(注意单词中“i”的花哨版本。)

它直接写入响应 ( HttpServletResponse.getWriter().write(JSON output string))。下次我可以看到它在

“某物”有:

在哪里 ”?” 是显示为黑色钻石的字符之一。在内部,它是一个多字符 Unicode。

CRC我在每一端使用的主要是(AnDan CRC software我认为它是一个 CRC-16 实现)。我找不到一个好的链接,只有一些旧的下载页面:-(。

我想知道是否有一个开关或配置可以让我通过CRC处理来处理我的 Unicode 和高位字符。有任何想法吗?

0 投票
2 回答
4958 浏览

equation - 从方程实现 CRC 算法

我正在处理一个说要使用这个 16 位循环冗余校验的设备:

我寻找了这种算法的实现,但我确实只找到了等式的最后一项等于1(ie x^0) 而不是 的算法x^1,例如this onethis

当我意识到我不知道如何开始时,我打算自己实现算法。应该如何从方程开始进行 CRC 计算?