- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 NXP NTAG 424 chips , 具有 AES-128 加密功能。
每当设置新 key 时,该芯片都需要计算 crc32 校验值(请参阅 datasheet 11.6.1/第 67 页)。根据数据表,crc 是“根据 IEEE Std802.3-2008 计算的”。 application note (6.16.1/page 39) 甚至给出了一个例子:
new_key: F3847D627727ED3BC9C4CC050489B966
CRC32(new_key): 789DFADC
>>> from binascii import unhexlify, crc32
>>> new_key = unhexlify('F3847D627727ED3BC9C4CC050489B966')
>>> print(hex(crc32(new_key)))
0x23056287 # Not the CRC I was looking for
>>> print(hex(crc32(new_key[::-1])))
0x9453faa7
最佳答案
该示例的 CRC 是 补充 IEEE Std802.3(或等效的 CCITT V.42)指定的 32 位 CRC,我详细介绍了 there供引用。这是在此标签中使用标准 CRC 变体的另一种情况:与所有 ISO/IEC 14443 A 类标签一样,其错误检测(高达 848 kbit/s)使用 IEEE Std802.2 的 16 位 CRC 变体。 3(或等效CCITT V.42)规定,具有不同的初始值且缺少最终补充。
这是与问题的测试向量相匹配的自包含代码:
# compute the CRC32 for NTAG424
# Ethernet / CCITT V42 CRC32, less final complement
def NTAG424CRC(m):
c = 0xFFFFFFFF
for b in m:
c ^= b;
for n in range(8):
c = (c>>1)^(0xEDB88320&-(c&1))
# c ^= 0xFFFFFFFF # required by Ethernet / CCITT V42
return c.to_bytes(4,'little')
# demo, expected value 789dfadc
print(NTAG424CRC(bytearray.fromhex('F3847D627727ED3BC9C4CC050489B966')).hex())
What am I doing wrong?
binascii.crc32
的输出大端;它是小端的,在电信中必须如此,以保留 CRC32 的突发错误检测属性。这是 binascii.crc32
规范中的疏忽有一个 int
作为输出,当使用 bytearray
时就像它的输入会使字节序错误几乎不可能。 binascii.crc32
,它是原生的并使用预先计算的表,因此速度要快得多(但可能更容易受到与缓存相关的旁道攻击)。
import binascii
# compute the CRC32 for NTAG424 using binascii.crc32
# Ethernet / CCITT V42 CRC32, less final complement
def NTAG424CRC(m):
return (binascii.crc32(m)&0xFFFFFFFF^0xFFFFFFFF).to_bytes(4,'little')
# &0xFFFFFFFF deals with negative output; it can be removed under Python 3
# ^0xFFFFFFFF undoes the complement rightly done by binascii.crc32
# demo, expected value 789dfadc
print(NTAG424CRC(bytearray.fromhex('F3847D627727ED3BC9C4CC050489B966')).hex())
关于nfc - NTAG 424 NFC芯片的Python CRC计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708943/
我目前正在使用 NXP NTAG 424 chips , 具有 AES-128 加密功能。 每当设置新 key 时,该芯片都需要计算 crc32 校验值(请参阅 datasheet 11.6.1/第
我需要在阅读器和 NFC 标签之间实现身份验证程序,但由于我在这方面的知识有限,我将不胜感激 一些帮助以了解一些概念。 提前原谅重写圣经,但我无法总结更多。 有许多标签系列(ICODE、MIFARE、
我已经尝试了很长时间从我的 NFC 卡中写入和读取数据。这些卡是 NTAG216。我可以使用 libnfc 示例来读取制造商 ID,它工作正常。但我需要向每个标签写入一些自定义数据,例如字符串“abc
现在我们可以在 iOS11beta 中访问 NTAG 读取功能,目前读取 NTAG 的唯一方法似乎是直接调用具有 NTAG 功能的应用程序。这消除了 NFC 的最大优势之一——进入应用程序的深层快捷方
我想编写一个响应 NFC 阅读器的 Java Card 小程序,就好像它是一个常规的 MIFARE Ultralight 或 NTAG NFC 标签一样。 我知道 MIFARE 协议(protocol
我是一名优秀的程序员,十分优秀!