读取APDU命令的响应

时间:2014-03-29 20:19:58

标签: java smartcard apdu

我正在尝试从智能卡中的文件读取数据,我使用以下APDU命令

00 B0 00 02 00

但我得到了这样的答复:

A1 1B 4F 0C A0 00 00 00 77 02 08 05 04 49 44 01 50 07 43 4E 49 2D 43 53 45 51 02 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 

如何以十六进制编码转换或读取此值?

2 个答案:

答案 0 :(得分:4)

最后两个字节组成状态字(SW),首先是90,然后是00。其余的是文件中二进制数据的十六进制编码。

看起来内容是ASN.1 BER编码的。所以你需要BER解码响应。 BER是TLV(标签长度值)。所以前两个字节是标记和值A1 1B。文本的含义是特定于上下文的(因此请查看此特定文件的规范)。因此,您的文件实际上包含2 + 1B个字节或29个字节,其余部分保留为默认值00

在ISO 7816-4中规定了BER解码,您真正应该了解有关基于文件的智能卡的任何信息。另请查看Wikipedia page about ASN.1并查看解码后的值here

答案 1 :(得分:0)