智能卡接口数据单元不匹配

时间:2017-10-05 14:22:31

标签: smartcard winscard

我正在编写从学生证中读取数据的代码。 卡初始化后,选择卡上的目录和文件,我开始用READ BINARY(B0)读取数据。

根据ISO 7816-4: Interindustry Commands for Interchange

  

如果P1中的bit8 = 0,则P1 || P2是从文件开头以数据单位读取的第一个字节的偏移量。

我正在以块的形式读取数据,每个16字节。在第一个循环中,我想阅读let date = Date() let startOfDay = Calendar.current.startOfDay(for: date) ,所以我设置offset = 0P1 = 0x00,一切正常,前16个字节从卡传输。

问题从第二个循环开始,接下来的16个字节应该从P2 = 0x00读取,所以我设置offset = 16P1 = 0x00,但我从P2 = 0x10接收数据。

经过一些测试后,我发现offset = 64总是被解释为4个字节的偏移量。

我的卡似乎每个都使用数据单元(提到ISO 7816-4),大小为DWORD。

Web中的所有示例都将数据单元视为字节,所有内容似乎都适用于作者/用户。我的问题是:如何在应用程序运行时确定数据单元的大小?

0 个答案:

没有答案