问题标签 [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.
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 的实现,会有很大帮助!
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
我试过使用
没有成功,CRC 16 计算返回:E6 F4
而不是 a0 77
当我查找时,我得到了正确的十六进制信息:
100000000000000012510908001800040214000c000c021c0002000000000000
在网站http://www.lammertbies.nl/comm/info/crc-calculation.html但我无法重现它。(确保将输入类型选择为 HEX)
你能帮我弄清楚如何获取十六进制值字符串的 crc16 CCITT
100000000000000012510908001800040214000c000c021c0002000000000000
我正在寻找校验和a0 77
i2c - CRC16 在第一个函数调用时是正确的,但在下一个函数调用时是错误的?
声明变量:
函数 CRC16:
函数调用主循环:
我认为变量值仍然记得上次函数调用。如何重置此变量?
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
结果是:
也许有人可以帮助我找到正确的方法,我不知道出了什么问题......
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 不匹配数据填充字节无效。如何正确执行更改密钥?这对我来说是必要的。谢谢。
crc16 - C# CRC-16-CCITT 0x8408 多项式。需要帮助
我是通信编程的新手。基本上,我需要得到 CRC 输出的十六进制等效值。我有一个十六进制字符串,它是参数 -
这是两个字符串的连接。我需要的输出是E6EB
inhex
或59115
in ushort
。我根据在网上找到的内容尝试了不同的方法,但无济于事。我应该使用的多项式0x8408
是http://en.wikipedia.org/wiki/Polynomial_representations_of_cyclic_redundancy_checks。[CRC-16-CCITT][1]
我尝试了这种方法,CRC_CCITT Kermit 16 in C#,但输出不正确。我还尝试了~
一些建议的按位运算符进行反向计算,但仍然失败。
很感谢任何形式的帮助。
java - C CRC16 的 Java 等效项
我需要将C
CRC16 方法转换为Java
. 问题是我不太擅长C
和字节操作。
C
代码:
这就是我转换它的尝试。不确定这是否正确。
问题: 我移植到 Java 是否正确?
编辑:
修改后crc16
的工作方法(感谢出色的答案):
这将返回十进制值。并且 CRC16 代码需要是十六进制的。我使用此方法转换为基数 16。使用收到的方法执行此crc
操作dec2m(crc, 16)
:
为了测试你的结果,你可以使用这个网站(感谢@greenaps)
c - 对 crcsum 的未定义引用(unsigned char const*, unsigned long, unsigned short)
我正在尝试在 arduino 草图中实现 CRC16。我从网上得到了 crc.c 文件,我想试试看。我创建了其他文件以允许 crc.c 正确运行。这是我的文件。
crc.h:
crc.c:
我在以下文件中调用函数“crcsum”。
crc.ino:
问题是我收到以下错误。
我知道我的头文件和函数运行正常,因为当我注释掉 crc.ino 中的函数调用时,一切都编译得很好。
为什么我会收到此错误?我在网上查看并尝试修复它一段时间,但我没有任何运气。我的猜测是问题必须与函数参数有关。我尝试调整参数,但无济于事。非常感谢任何输入。谢谢大家!
reverse-engineering - 逆向工程CRC
我有大约 750 字节长的数据,受 CRC 保护。我想更改数据但不知道 CRC 方案意味着我做不到。但我有幸观察样本数据的 CRC 值。我使用了这里描述的这种非常酷的数学技术
我将 CRC 识别为数据块的最后两个字节,因为当我仅更改数据的 1 位并对其进行异或运算时,结果除该位和最后两个字节外全为零。
我能够为这样的差异消息生成 C1、C2:
由于消息是上述链接中描述的“差异消息”,我们可以放心地忽略 CRC 的 XorIn 和 XorOut 值。但是 reflectIn 和 ReflectOut 参数仍然会影响这个过程。对于所有四种组合,当 C2 的 MSB 为零时,我检查了 (C2<<1) XOR C1 是否为零。但这种情况并非如此。我想知道我哪里出错了。
javascript - Cashcode 驱动程序的 Python CRC(从 JS 到 Python)
我尝试为 CashCode 重写 CCNET 驱动程序,从节点到 Python。但是,我真的不能运行 CRC 生成器。
你可以在Github repo上找到“工作”代码
这是JS函数:
我尝试crcmod
,但它不是预定义的函数,当我尝试设置多项式时,出现错误
这是我有时工作的代码:
我得到
帮我实现这个功能。(输入二进制/整数或十六进制字符串)
UPD: : 它适用于bytearray.fromhex(data)
. 谢谢)