当前位置: 首页 > 面试题库 >

使用READ BINARY读取超过256个字节

刘野
2023-03-14
问题内容

我正在尝试使用javax.smartcardio
读取智能卡(德语Gesundheitskarte)

在EF“ PD”
的定义中,其长度指定为850字节。内容应该是一个gzip压缩的ISO5589-15编码的XML字符串作为指定在这里

作为CommandAPDU,我发送

00 B0 00 00 00

获取前256个字节。发送后

00 B0 00 FF 00

我得到下一个256个字节。

但是我如何得到其余的呢?

我怎么知道二进制数据何时结束?

德国规范第1部分
|
德国规范第2部分


问题答案:

READ BINARYAPDU允许 2 个字节的文件偏移量,用P1和P2编码,并使用Le表示长度,READ BINARY以表示响应中的字节数。P1是 高字节 或最高有效字节。但是,保留P1的最高位以指示P1是否还包含 短文件标识符
0如果您已经在读取文件,则该值应保持不变,最大偏移量为32Ki-1。

我看不到您链接的规格,但假设READ BINARY卡上的APDU的工作方式相同。

您的读取前256个字节的命令似乎是正确的,注意这Le==0x00表示已读取256个字节。

要读取以偏移量256、512等开头的字节,请开始递增P1,例如:

00 B0 01 00 00
00 B0 02 00 00
00 B0 03 00 00

要读取从偏移量257(0x101)开始的256个字节,请执行以下操作:

00 B0 01 01 00

偏移600(0x258):

00 B0 02 58 00

在您的代码中,如果您使用Java int存储偏移量,通常会以如下所示结束P1的递增:

int offset;
int P1, P2;

while (continueReading)
{
    // ...
    P1 = (offset >> 8) & 0xFF;
    P2 = offset & 0x00FF;
    // ...
    // send APDU
}

如何指示文件的大小取决于实现方式。通常,您可以从EF(00 A4 00 00 02 fileId)上的SELECT返回的文件控制信息(FCI)结构中获取文件大小。但是,文件的大小也可以嵌入文件的内容中。如果可能的话,您不应依靠状态字来告诉您文件的大小。

加法:Le,Ne和奇数INS

重要的是只增加响应数据(RDATA)中 实际接收 的字节数的偏移量。注意,如果P3 = Le,则Le编码Ne,Ne是响应数据的 最大
大小。您收到的可能少于该数。

如果文件大小为32Ki或更大,则需要使用READ
BINARY和奇数INS(B7)来读取32Ki以上的数据。在那种情况下,RDATA也可能包含开销。显然,这反过来可能会影响偏移量计算以及要读取到文件末尾的计算。



 类似资料:
  • 我使用rsa密钥加密一个长字符串,并将它发送到我的服务器(将使用服务器的公钥和私钥加密它),但它会引发类似我觉得到目前为止我还没有正确理解rsa的工作方式(使用内置库是造成这种情况的原因)。 有人能解释为什么会引发此异常吗?难道根本不可能发送加密的长字符串吗?

  • 问题内容: 我正在使用rsa密钥对要发送到服务器的长字符串进行加密(将使用服务器的公钥和我的私钥对它进行加密),但是它抛出一个异常,就像 我觉得到目前为止我还不了解rsa的工作原理一样(使用内置库是造成这种情况的原因)。 可以请一个人解释为什么抛出此异常。根本不可能发送加密的长字符串吗? 问题答案: RSA算法只能加密具有以字节为单位的RSA密钥长度的最大字节长度除以8减去11的填充字节的数据,即

  • 我正在用RSA私钥加密我的对称密钥(AES),并用我的公钥解密它。 但是,当我加密数据时,字节长度是16字节,然而,当我解密数据时,它抛出了受影响的错误,解密时字节数据的长度是344。

  • 问题内容: 我正在使用API(,和,和朋友)对远程服务器进行Web服务调用,这在很大程度上取得了很大的成功。 但是,有时会出现问题,并且程序永远卡住。 为了解决这个问题,我想添加一个读取超时。 我发现有几种方法可以实现这一目标,但它们似乎都非常糟糕。 所以我对社区的问题是:使用javax.xml.soap API进行调用时,实现读取超时行为的最佳方法是什么? 问题答案: 您必须创建自己的URLSt

  • 我希望使用java.util.scanner()从控制台读取一个全名,并将该值赋给一个字符串。

  • 这是来自.properties得my DB配置: 这是config.xml: 实际上,我可以很容易地访问我们的本地web应用程序,并且可以在日志中看到到DB的连接跟踪,但对于批处理来说,情况并非如此。 在我有了这个之后: 有人帮忙吗?