将数据写入 StdData 文件中的智能卡



我使用此 apdu 命令在智能卡中创建了一个文件:

String apdu = "90CD00000700000E0EA0000000"; channel.transmit(new CommandAPDU(DatatypeConverter.parseHexBinary(apdu)));

该文件已成功创建,但是我无法在该文件中写入数据,我尝试了以下命令: String apdu = "903D00003B00000000000034" + data + "00";

但它失败并显示响应:sw1 91 sw2 BE(超出边界(

这个文件有什么问题?

DESFire 命令使用小端字节顺序。

您的长度(000034(被解释为3407872字节。您需要使用 340000 对 52 进行编码。

尝试较短的书写方式,例如:903D00000F00000000080000112233445566778800写"1122334455667788"...

祝你好运!

编辑

>

调整 APDU 和 WriteData 的 P3 中的长度以进行较长的写入,例如:

    903D0000 17 00000000
  • 10000000112233445566778899AABBCCDDEEFF00

请注意,DESFire 有一个帧大小限制,它限制了可以在单个命令交换中写入的字节数(对于 ISO 包装的 DESFire WriteData 命令,它大约是 47 字节的数据(。您需要使用偏移量执行多次写入(记住 litte-endian 编码(或使用附加帧机制 - 请参阅您的 DESFire 手册(后者略快(。

相关内容

  • 没有找到相关文章

最新更新