我正在使用T=0协议中的卡:
>
00 C0 00 XX
关于ISO7816-3,我希望该卡能给出以下回应:
Procedure byte | Data | SW1 SW2
如果SW1==0x61
,我会发送:
00 C0 00 00 SW2
以此类推,直到最后我得到了9000
。
然而,这是我实际拥有的(TPDU级别):
> Command
< 61 00
> 00 C0 00 00 00
< C0 (procedure byte)
< Data (256)
No Status Word, no procedure byte (timeout)
> 00 C0 00 00 00
< C0 (procedure byte)
< Data (256)
No Status Word, no procedure byte (timeout)
[...]
> 00 C0 00 00 00
< 61 39 (status word)
我必须反复发送P3=00(256)的GET响应,读取256个字节,并且没有状态字,直到卡警告我实际读取的字节数少于256。
我找不到规范中允许卡“跳过”状态词的部分,或者如何处理超过256字节的答案。有指针吗?
在T=0协议中,数据不可能超过256字节。
在你的情况下,这可能是一个错误(或误解)的协议,你的应用程序检索256字节后,它仍然发送61XX回来。
实际上你的日志中并不清楚你的GET RESPONSE命令的状态字是什么,如果是9000,那么一切都很好,没有更多的讨论。在这种情况下,如果你重复GET RESPONSE命令,你可能会再次得到最新的数据!
只需回答您的具体问题:
我找不到规范中允许卡“跳过”状态字的部分
你可以忽略它!
我的意思是,如果卡通知它有一些可用数据(61 XX),而您没有发送任何GET响应命令,而是发送另一个命令,那么数据将丢失。
或者如何处理长度超过256字节的答案。有指针吗?
在协议T=0中是不可能的。您最好使用协议T=1或T=15来代替。
或者你可以通过一个稍微增强的协议来解决这个问题,然后你应该重写这个应用来支持它(如果这个应用是你的),它可能不再是标准的了!
我正在用RSA私钥加密我的对称密钥(AES),并用我的公钥解密它。 但是,当我加密数据时,字节长度是16字节,然而,当我解密数据时,它抛出了受影响的错误,解密时字节数据的长度是344。
我使用rsa密钥加密一个长字符串,并将它发送到我的服务器(将使用服务器的公钥和私钥加密它),但它会引发类似我觉得到目前为止我还没有正确理解rsa的工作方式(使用内置库是造成这种情况的原因)。 有人能解释为什么会引发此异常吗?难道根本不可能发送加密的长字符串吗?
问题内容: 我正在使用rsa密钥对要发送到服务器的长字符串进行加密(将使用服务器的公钥和我的私钥对它进行加密),但是它抛出一个异常,就像 我觉得到目前为止我还不了解rsa的工作原理一样(使用内置库是造成这种情况的原因)。 可以请一个人解释为什么抛出此异常。根本不可能发送加密的长字符串吗? 问题答案: RSA算法只能加密具有以字节为单位的RSA密钥长度的最大字节长度除以8减去11的填充字节的数据,即
问题内容: 我正在尝试测试Express.js控制器,但是每隔一段时间我就会碰到mocha超时提示我的问题。 文档(https://mochajs.org/#working-with-promises) 我用Promises包装了Express控制器,以便随后可以在测试中将它们返回。 我有一个基本测试,可以运行以始终得到错误消息: 我得到的错误是: 我不明白为什么会出现错误,因为我正在返回确实解决
问题内容: 我正在尝试使用javax.smartcardio 读取智能卡(德语Gesundheitskarte) 在EF“ PD” 的定义中,其长度指定为850字节。内容应该是一个gzip压缩的ISO5589-15编码的XML字符串作为指定在这里 作为CommandAPDU,我发送 获取前256个字节。发送后 我得到下一个256个字节。 但是我如何得到其余的呢? 我怎么知道二进制数据何时结束? 德