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

时间:2019-06-04 11:56:28

标签: java smartcard apdu smartcardio

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

session_start();

该文件已成功创建,但是我无法在该文件中写入数据,我尝试了以下命令: String apdu = "90CD00000700000E0EA0000000"; channel.transmit(new CommandAPDU(DatatypeConverter.parseHexBinary(apdu)));

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

此文件有什么问题?

1 个答案:

答案 0 :(得分:1)

DESFire命令使用little-endian byte order

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

尝试较短的书写,例如:903D00000F00000000080000112233445566778800写'1122334455667788'...

祝你好运!

编辑>

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

  • 903D0000 17 00000000 100000 00112233445566778899AABBCCDDEEFF00

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