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

c# - 通用 CRC (8/16/32/64) 结合实现

这个问题的旧标题: CRC16 combine implementation 与 CRC32 combine Implementation 之间的区别

我正在尝试实现类似于 CRC32 组合实现的 CRC16 组合实现。我正在使用此处描述的 CRC-CCITT(初始值:0xFFFF,Poly:0x1021) 。

我阅读并尝试理解本答案中描述的 CRC32_Combine 实现,但我还没有完全理解它。我已经为 CRC16 组合做了一个 C# 实现,只是将 32x32 矩阵修改为 16x16,我不确定。我应该得到以下值,但我没有得到这些值:

ZLib 的 C# 代码:

任何人以前都有 CRC16 combine 的实现,会有很大帮助!

0 投票
3 回答
5589 浏览

php - 如何在 PHP HEX 中计算 CRC16 CCITT?

我正在尝试使用 PHP CRC16 CCITT 函数来计算校验和。

一个设备向我发送一个包含校验和的数据包:

10 00 00 00 00 00 00 00 12 51 09 08 00 18 00 04 02 14 00 0c 00 0c 02 1c 00 02 00 00 00 00 00 00 a0 77

校验和在最后:a0 77

我试过使用

如何在php中计算crc16

为 CRC16 函数将 C 转换为 PHP

没有成功,CRC 16 计算返回:E6 F4而不是 a0 77

当我查找时,我得到了正确的十六进制信息:

100000000000000012510908001800040214000c000c021c0002000000000000

在网站http://www.lammertbies.nl/comm/info/crc-calculation.html但我无法重现它。(确保将输入类型选择为 HEX)

你能帮我弄清楚如何获取十六进制值字符串的 crc16 CCITT

100000000000000012510908001800040214000c000c021c0002000000000000

我正在寻找校验和a0 77

0 投票
0 回答
99 浏览

i2c - CRC16 在第一个函数调用时是正确的,但在下一个函数调用时是错误的?

声明变量:

函数 CRC16:

函数调用主循环:

我认为变量值仍然记得上次函数调用。如何重置此变量?

0 投票
2 回答
616 浏览

java - 从 C++ 到 Java 的校验和 CRC 16

我有 C++ 中校验和 CRC16 的源代码:

例如,当我们放:

QByteArray buffer = \x02\x14\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

结果是:

我试图在 Java 中实现相同的结果,但没有积极的效果

第一个例子:

另一个:

例如,当我们放置两种情况时:

byte[] buffer = 0x2 0x14 0x14 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0

结果是:

也许有人可以帮助我找到正确的方法,我不知道出了什么问题......

0 投票
1 回答
949 浏览

java - 更改 DESFire 主密钥时出现 0x1E 错误(INTEGRITY_ERROR)。我的错误是什么?我该如何解决?

整个更新1:再次查看问题。

我最近正在处理DESFire卡片。我现在决定更改PICC的默认主密钥

(我已经可以成功地使用所有 8 字节 0x00 的主密钥进行身份验证)

1- 违约master key是 8byte的零。它是00 00 00 00 00 00 00 00

2-master key我选择的新是 16 byte

这是:

3-我使用旧的主密钥进行身份验证(仍然没有更改,仍然是 8 字节的零。)成功。随机数是:

随机 A = 8 字节数

随机 B = 8 字节数

4 - 我每次都使用随机 A 和随机 B 创建会话密钥:会话密钥 = 随机 A 的前 4 个字节 + 随机 B 的前 4 个字节

5 - 我用下面的方法为新的主密钥创建 CRC16。结果是:D8 EC(新的 PICC 主密钥可以是 16 字节?还是必须是 8 字节?顺便说一下,我为新的主密钥选择了 16 字节的值)

6 - 我用 crc 和 padding(解密)创建了 ew PICC 密钥

7-我计算 crc16 并将其添加到我的新密钥中:

8 - 我用下面的方法在新的主密钥上加密,我得到了一个 24 字节的加密:

这是用于加密的 DES 类:

9-最后我填充参数字节数组并将其与指令(c4)一起发送到

这是 Utils 类:

我在最后一步(发送 apdu 以更改卡的主密钥)收到异常 0x1E 错误,这意味着完整性错误:CRC 或 MAC 不匹配数据填充字节无效。如何正确执行更改密钥?这对我来说是必要的。谢谢。

0 投票
2 回答
6365 浏览

crc16 - C# CRC-16-CCITT 0x8408 多项式。需要帮助

我是通信编程的新手。基本上,我需要得到 CRC 输出的十六进制等效值。我有一个十六进制字符串,它是参数 -

这是两个字符串的连接。我需要的输出是E6EBinhex59115in ushort。我根据在网上找到的内容尝试了不同的方法,但无济于事。我应该使用的多项式0x8408http://en.wikipedia.org/wiki/Polynomial_representations_of_cyclic_redundancy_checks[CRC-16-CCITT][1]

我尝试了这种方法,CRC_CCITT Kermit 16 in C#,但输出不正确。我还尝试了~一些建议的按位运算符进行反向计算,但仍然失败。

很感谢任何形式的帮助。

0 投票
2 回答
1089 浏览

java - C CRC16 的 Java 等效项

我需要将CCRC16 方法转换为Java. 问题是我不太擅长C和字节操作。

C代码:

这就是我转换它的尝试。不确定这是否正确。

问题: 我移植到 Java 是否正确?


编辑

修改后crc16的工作方法(感谢出色的答案):

这将返回十进制值。并且 CRC16 代码需要是十六进制的。我使用此方法转换为基数 16。使用收到的方法执行此crc操作dec2m(crc, 16)

为了测试你的结果,你可以使用这个网站(感谢@greenaps)

0 投票
3 回答
4463 浏览

c - 对 crcsum 的未定义引用(unsigned char const*, unsigned long, unsigned short)

我正在尝试在 arduino 草图中实现 CRC16。我从网上得到了 crc.c 文件,我想试试看。我创建了其他文件以允许 crc.c 正确运行。这是我的文件。

crc.h:

crc.c:

我在以下文件中调用函数“crcsum”。

crc.ino:

问题是我收到以下错误。

我知道我的头文件和函数运行正常,因为当我注释掉 crc.ino 中的函数调用时,一切都编译得很好。

为什么我会收到此错误?我在网上查看并尝试修复它一段时间,但我没有任何运气。我的猜测是问题必须与函数参数有关。我尝试调整参数,但无济于事。非常感谢任何输入。谢谢大家!

0 投票
0 回答
1512 浏览

reverse-engineering - 逆向工程CRC

我有大约 750 字节长的数据,受 CRC 保护。我想更改数据但不知道 CRC 方案意味着我做不到。但我有幸观察样本数据的 CRC 值。我使用了这里描述的这种非常酷的数学技术

我将 CRC 识别为数据块的最后两个字节,因为当我仅更改数据的 1 位并对其进行异或运算时,结果除该位和最后两个字节外全为零。

我能够为这样的差异消息生成 C1、C2:

由于消息是上述链接中描述的“差异消息”,我们可以放心地忽略 CRC 的 XorIn 和 XorOut 值。但是 reflectIn 和 ReflectOut 参数仍然会影响这个过程。对于所有四种组合,当 C2 的 MSB 为零时,我检查了 (C2<<1) XOR C1 是否为零。但这种情况并非如此。我想知道我哪里出错了。

0 投票
2 回答
339 浏览

javascript - Cashcode 驱动程序的 Python CRC(从 JS 到 Python)

我尝试为 CashCode 重写 CCNET 驱动程序,从节点到 Python。但是,我真的不能运行 CRC 生成器。

你可以在Github repo上找到“工作”代码

这是JS函数:

我尝试crcmod,但它不是预定义的函数,当我尝试设置多项式时,出现错误

这是我有时工作的代码:

我得到

帮我实现这个功能。(输入二进制/整数或十六进制字符串)

UPD: : 它适用于bytearray.fromhex(data). 谢谢)