作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Android 项目,该项目依赖于已发现的 NFC 标签的唯一 UID 来处理标签。我使用以下代码提取此 UID:
byte[] extraID = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
但是,出于安全目的,对于某些技术,此 UID 是随机生成的。有人知道我如何检测到这是随机生成的 UID 吗?是否设置了某种标志?
注意:一个简单的解决方案是读取标签两次并比较 UID。但是,我想避免这种情况。
最佳答案
对于 NfcA(以及 IsoDep 和/或 MifareClassic 与 NfcA 组合),如果 ID 恰好 4 个字节长并且以 0x08 开头,则 ID 是随机的。有些卡(MIFARE DESFire)可以配置一个长度为 4 字节、以 0x80 开头的随机 ID。
对于 NfcB(以及与 NfcB 结合的 IsoDep),没有为随机 ID 保留的预定 ID 范围。事实上,任何 NfcB ID 都可以是随机的。 NfcB ID其实叫做PUPI,代表“Pseudo Unique PICC Identifier”。所以这个名字已经表明不保证唯一性。
对于 NfcF 和 NfcV,ID 一般不会是随机的。
只有当您从 RF 场中移除标签时,才能读取标签两次以检测随机 ID。只要标签保持由 Rf 场供电,它通常会保持相同的随机 ID。
关于android - 如何在 Android 中检测来自 NFC 标签的 UID 是否是随机的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797030/
我是一名优秀的程序员,十分优秀!