我正在尝试从智能卡中的文件中读取数据,我正在使用以下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 如何以十六进制编码转换或读取此值?
发布于 2014-03-30 19:13:53
最后两个字节组成状态字(SW),首先是90,然后是00。其余部分是文件中二进制数据的十六进制编码。
然而,看起来内容是ASN.1 BER编码的。因此,您需要对响应进行BER解码。BER为TLV (标签长度值)。因此,前两个字节是标记和值,A1 1B。文本的含义是特定于上下文的(因此请查看此特定文件的规范)。因此,您的文件实际上包含2+ 1B字节,或29字节,其余的保留它们的默认值00。
BER解码是在ISO 7816-4中指定的,你应该真正了解基于文件的智能卡的任何东西。还要看一下Wikipedia page about ASN.1和解码后的值here。
发布于 2015-10-29 21:36:15
您需要遵循TS 11.11、TS 11.14、TS 03.48。
http://www.etsi.org/deliver/etsi_ts/100900_100999/100977/08.14.00_60/ts_100977v081400p.pdf
http://www.etsi.org/deliver/etsi_ts/101200_101299/101267/08.18.00_60/ts_101267v081800p.pdf
http://www.etsi.org/deliver/etsi_ts/101100_101199/101181/08.09.00_60/ts_101181v080900p.pdf
https://stackoverflow.com/questions/22736399
复制相似问题