问题标签 [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 回答
320 浏览

delphi - Delphi - 更改(ini)文件但保持 crc16 的校验和相等

我正在寻找一种方法来更改 ini 文件但保持校验和与以前一样。我知道我可以尝试更改一些字节,直到结果合适。但我想采用编程方式。任何想法都非常感谢。

背景:程序检查 ini 的 crc,如果不合适,显示一个消息框,用户必须单击“确定”。该程序从批处理启动并在完成后自动退出。很多时候,没有用户,所以程序无法完成他的工作。无法安装 Autoit 或类似软件。

同时,crc 检查已过时。该程序已超过 10 年,我们无法联系到开发人员,也没有来源。

0 投票
1 回答
93 浏览

crc - 如何检测受 CRC 保护的数据中的错误?

据我了解,要检查其末尾附加 CRC 的数据是否有错误,需要通过相同的 CRC 算法运行它并查看新计算的 CRC 是否为零。

我尝试通过以下方式使用在线 CRC 计算器进行此操作:

  1. 计算 0xAABBDD 的 CRC(没有 0x 部分)- CRC16 输出 0x8992
  2. 计算 0xAABBDD8992 的 CRC - CRC16 输出 0xFB4A,而不是 0x0000

我究竟做错了什么?

0 投票
1 回答
1866 浏览

crc - 为什么对 CRC-8 使用像 x^8 +x^2 +x+1 这样的生成多项式?

为什么使用像这样的生成多项式 G(x) =x^8 +x^2 +x+1 用于 CRC-8。如果这是最优的,我们如何证明它。或使用此多项式 G(x) = x^5 + x^4 + x^2 + 1 用于 CRC-5-ITU。

0 投票
1 回答
147 浏览

java - Delphi 到 Java 移植问题

我知道java byte 是一个 8 位有符号变量,要获得无符号(字节)值,我将不得不在0xff任何地方进行屏蔽。

Java 文档还说我可以通过前面提到的过程使用 int 生成无符号位。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

但是,无论是否使用掩码,它都会返回相同的结果。

我正在尝试将short更改为 int 但没有成功。

德尔福代码

Java 代码

在这种情况下要显示的正确结果是“01 06 00 01 00 0A 58 0D”

有什么想法吗?有什么帮助吗?

0 投票
1 回答
8729 浏览

c++ - 如何配置计算CRC表

那里有很多 CRC 计算示例。使用位移位的简单实现,使用预先计算的表更有效。但是除了多项式之外,还有很多CRC的参数会影响计算。您可以在此处评估这些参数:http: //zorc.breitbandkatze.de/crc.html

这些参数是

  • CRC初值
  • 输入数据的反映
  • 输出数据的反映
  • CRC 的最终 XOR 值

对于某些“标准”CRC 算法,这些参数是明确定义的,例如 CRC-16 (CCITT)。但是有一些实现使用不同的参数。

我的实现必须与具有 CCITT 多项式 (x 16 + x 12 + x 5 + 1) 的 CRC16 兼容。但必须反映数据字节和最终的CRC。我已经在计算方法中实现了这些反射。但这很耗时。为了获得最佳性能,必须从计算中删除它。

初始化方法中如何计算CRC的反射参数?

编辑:我应该如何单独控制每个参数?我想了解该Init函数的实际工作原理以及所有参数的实现方式。

0 投票
1 回答
1711 浏览

reverse - 计算 CRC 初始值而不是将 CRC 附加到有效负载

我实现的大多数 CRC 都将计算出的 CRC 值附加到消息(有效负载)中,并在接收器处检查所有字节后的零结果,包括。CRC 值通过 CRC 寄存器提供。显然,这是一种非常标准的方法。

现在我想使用不同的方法:

  1. 从有效负载中计算一个值。
  2. 在消息字节(有效负载)通过 CRC 寄存器之前使用该值作为 CRC 寄存器的初始值,这样在有效负载的最后一个字节通过之后的结果将为零。

做到这一点的最佳方法是什么?是否有一个好主意或一些指针可以深入挖掘?

ps:我为什么要这样做?在某些应用程序 (ROM) 中,我无法附加数据,因为数据存储在 ROM 地址空间的末尾。所以我想预加载 CRC 寄存器或将值添加到消息中。

0 投票
3 回答
1265 浏览

reverse-engineering - 未知 CRC 计算

我正在尝试对旧串行设备的通信协议进行逆向工程。我已经弄清楚了大部分,但我坚持使用所使用的 CRC 算法。我有可以生成请求消息的主机软件,所以我包含了主机软件发送的相对较短的消息的转储。

这似乎完全基于 ASCII,并且与 modbus 类型的协议有点相似,因为它使用寻址方案请求寄存器数据。数字使用对应于可读十六进制值的 ascii 字符表示。

以下是针对各个寄存器的一堆请求消息(主机-> 设备)。一些寄存器是无效的,所以这不是完全连续的,但在大多数情况下,这些请求仅相差一个字符/“数字”。我 99.9% 确定最后 4 个字符是校验和,但我不知道它们是如何计算的。我已经尝试过常用的算法,但对 CRC reveng 程序的运气并不好(尽管我可能做错了什么)。任何想法将不胜感激。

-----更多数据请求字符串-----

这里还有一些我还没有完全解码的数据字符串,前 3 个字符是从机地址(类似于 modbus 设备地址方案),接下来的 2 个字符是功能代码。“10”是一个数据缓冲区请求,我还没有解码。有趣的是,这个特定请求中有非数字字符,这可能是底层校验和计算的重要线索。

功能代码“09”是一个连续的参数组,据我所知,它后面是寄存器地址(3 个数字字符,后面是寄存器计数,也是 3 个数字字符)

0 投票
2 回答
1253 浏览

python - 逆向工程得到 CRC16 多项式

我试图找到一种使用基值和 CRC16 输出计算 CRC16 多项式的有效方法。
一个更清楚的例子:

如何找到 CRC16 函数用于评估 y 的多项式?
我正在使用 C 和 Python 创建一些可执行文件(用于测试目的)。

0 投票
0 回答
261 浏览

c# - ZMODEM CRC-32 FCS 问题

我发现了很多关于这个主题的问题和答案。但我仍然坚持使用 ZModem 的东西。我在帧(FCS)的末尾被CRC-32的东西困住了。我想知道这个校验和是在 ZFile 头帧的哪一部分计算的?计算是否包括帧类型、编码类型、ZCRCW 字节、...?或者只是 ZFs/ZCRCS 和信息。我还想知道是否可以根据整个帧值计算帧的 CRC?是否可以在 CRC-16 和/或 CRC32 中找到带有解释的 CRC 计算示例?我是 c#,所以我有时会迷失在 Zmodem 规范中。提前致谢

0 投票
1 回答
1245 浏览

delphi - Crc16 转字符串

我可以将字符串转换为 crc16,但我需要将 crc16 转换为字符串。这可能吗?

此函数将字符串转换为 CRC16 。