有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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

但它失败了,响应是:sw1 91 sw2 BE(超出边界)

这个文件有什么问题


共 (1) 个答案

  1. # 1 楼答案

    DESFire命令使用little-endian byte order

    您的长度(000034)将被解释为3407872字节。你需要使用340000来编码52

    试着写短一点,例如:903D00000F00000000080000112233445566778800写“112233445667788”

    祝你好运

    编辑>

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

    • 903D0000170000000010000000112233445566778899aabbccddeff00

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