android - 是否可以锁定 NFC 标签,然后再解锁并再次写入数据?

标签 android nfc rfid

我正在开发一个NFC应用程序,在公共(public)场所会有标签,这样就需要用密码或其他工具锁定标签,以避免有人删除信息或修改其内容。标签应该可以在以后更新。那么,有可能做到这一点吗?或者当我锁定标签时,它会永远保持只读状态吗?

最佳答案

这在很大程度上取决于您使用的 NFC 标签的类型(以及价格)。典型的廉价 NFC 标签(例如 Topaz/Jewel 等 1 类标签或 MIFARE Ultralight、NTAG203、Kovio 2K 或 my-d NFC 等 2 类标签)不允许这样做。它们只能永久写保护(这是您在公共(public)场所安装标签时通常应该做的)。

其他标签确实提供某种形式的基于身份验证的访问控制,可用于限制写访问标签内存,例如

  • MIFARE Ultralight C:使用 3DES 的相互质询响应身份验证
  • NTAG21x、MIFARE Ultralight EV1、my-d move NFC:基于密码的“身份验证”和明文密码。请注意,明文密码可能会带来严重的安全隐患。
  • MIFARE DESFire (EV1):使用 DES、3DES 或 AES 的相互质询响应身份验证
  • ...

身份验证不是 NFC 论坛标签操作规范的一部分,因此取决于标签/标签制造商。为了在 Android 上使用这些高级功能,您需要自己实现相关命令(使用 tech.transceive() 方法)。

请注意,Android 上的 Ndef.makeReadOnly() 不一定设置任何硬件锁定位。这种方法在某些情况下也可能只在协议(protocol)级别设置写保护(即设置一个标志,请求 NFC 设备不写入任何数据,但不保护实际数据页不被覆盖)。

关于android - 是否可以锁定 NFC 标签,然后再解锁并再次写入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278450/

相关文章:

android - 如何让 Android 手机像非接触式 (NFC) 终端一样工作

python - 扫描智能卡时如何检测事件

模拟物理 RFID 卡的 Android 应用程序

java - NFC intent-filter Android - 匹配 application/vnd.wfa.wsc 记录

android - 使用 Dagger 2 注入(inject)子类的最佳方法是什么?

java - 读取 APK 中的文件

android - 多个扫描/Intent 传递给接收 Activity

ios - 使用 Apple Wallet NFC Pass 作为 NFC 标签

android - 读取无源 RFID 关键标签

Android:微调器 setSelection 不起作用