无法使用扩展长度APDU从卡中读取大数据

时间:2016-07-22 07:36:44

标签: smartcard javacard apdu jcop

我正在尝试使用扩展长度APDU写入长度为0x2CF0字节的数据到卡上,它工作正常。但我无法使用扩展长度的apdu从卡中读取相同数量的数据。

我收到以下错误, " sun.security.smartcardio.PCSCException:未知错误0x4d3"。

当我尝试加载大小为0x1af0字节的相对较小的数据时,我能够使用扩展长度的apdu成功写入和读取卡。

对于在扩展长度apdu中从卡读取数据有任何限制吗?有没有使用命令链的解决方法?

PS:我使用的是JCOP 2.4.2 R2卡。

1 个答案:

答案 0 :(得分:2)

典型的智能卡存储要发送到RAM中的读取器的数据。 (除此之外,这使得更容易确保不发送来自非易失性存储器的秘密数据)。智能卡芯片的内存有限,你可以感到幸运,你的小尝试(超过6 k)仍然有效。

不幸的是,在ATR中,卡只能指示它支持扩展长度的APDU,但不支持哪个边界(如果输出受到安全消息处理,也可能会有所不同)。

典型的方法是,提供具有某种内部分区的命令,例如: G。在基于文件系统的文件中,使用二进制文件的概念,命令可以指定起始偏移量,参见this question

链接通常没有帮助;因为对于MAC计算,需要存在整个数据,所以该体系结构通常也会在所有其他情况下强制执行此操作。