我正在使用 HID Omnikey 5321 读卡器与 Mifare DESFire EV1 标签进行通信。我想在标准数据文件中写入 16 个字节。我正在使用WinSCard DLL(C)将Native DESFire命令包装在ISO 7816 APDU消息结构中。应用程序选择和身份验证已成功完成,但我的“写入数据”命令有问题。文件的通信设置设置为 AES,完全加密。
File Nb : 00
Offset : 00 00 00
Length : 10 00 00 (LSB first)
Data (16 bytes) : 23 00 00 00 00 00 00 08 12 34 56 78 00 00 00 00
我从Native命令计算CRC:
Native command : 3D (File Nb) (Offset) (Length) (Data)
CRC = 7B 8A 60 0F
然后我用会话密钥和设置为00的IV进行加密:
32 bytes data to encipher : (Data) (CRC) 80 00 00 00 00 00 00 00 00 00 00 00
APDU发送:
90 3D 00 00 27 00 00 00 00 10 00 00 (32 bytes enciphered data) 00
作为响应,我得到一个“1E”状态代码,这意味着CRC或填充错误。我不知道问题出在哪里,AES加密算法似乎很好,因为我设法读取数据。
可能是CRC或IV。我必须用CMAC对数据进行异或吗?
您使用的CRC错误。对于问题中显示的命令,命令头数据的CRC应为30 D2 07 00
。
此外,要小心填充的方式。DesFire EV1数据表对此含糊不清。虽然关于AES加密的部分建议CMAC填充应始终与AES一起使用,但关于填充的部分指出,已知数据长度的命令应填充全零,而未知数据长度的命令应填充0x80
后跟零。最后,写入命令上的档留明确指出,写入命令应填充全零以进行加密(这就是您应该做的)。
使用Nexus 4和最新的Android API level 18与Mifare DESFire EV1 AES标签通信让我头疼。根据恩智浦本机协议,要写入和读取此类标签,必须遵循以下步骤: 选择应用程序 身份验证 写入或读取 我也用ISO 7816-4 APDU结构进行了同样的尝试。奇怪的是,使用Galaxy Nexus不会发生select应用程序的奇怪响应,而是总是写命令一个。
问题内容: 我已经实现了通过低级通信方法与NTAG216进行交互的代码(紧随NTAG212 Mifare Ultralight withAuthentication和NTAG216的数据表之后)。 到目前为止,我取得了以下成就: 如果未设置密码或新标签/空白标签,请在NTAG216上设置密码写保护。 如果已设置密码,请使用PWD_AUTH并比较PACK进行身份验证。 读取数据。 写入/覆盖数据。
我已经实现了通过低级通信方法与NTAG216交互的代码(遵循NTAG212 Mifare Ultralight与身份验证和NTAG216的数据表)。 如果未设置或如果新/空白标签,请在NTAG216上设置密码写入保护。 如果已设置密码,请使用PWD_AUTH并比较PACK进行身份验证。 读取数据。 写入/覆盖数据。 检测我在其他应用程序中写入标签的NDEF消息。换句话说,我可以使用方法写入标签,也
我有一个Android平板电脑,Android4.2。这款平板电脑没有NFC硬件。然而,我有一个外部USB阅读器:ACR1252U,它附带了一个Android库。不幸的是,这个库只给了我基本的功能--读和写标记。虽然这很有效,但还不够... 因为对于我的应用程序,我需要将文件从我的Android4.2平板电脑传输到其他NFC设备(Android智能手机)。因此,我需要将NFC阅读器置于对等模式--
NFC是一个用JMS实现,稳定可靠,分布式的聊天服务器与客户端。它的特点包括:内置负载平衡和HTTP Tunneling支持。利用负载平衡这个特点能够形成一个分布式的服务器网络,类似于一个IRC网络。
NativeScript NFC plugin Installation From the command prompt go to your app's root folder and execute: NativeScript Version 7+: ns plugin add nativescript-nfc NativeScript Version 6 and below: tns plu