Safe Max Java 卡 APDU 数据命令和响应大小

2023-11-28

Java Card APDU 中建议的数据字段大小是多少?来自陈志群的Java Card Technology for Smart Cards: Architecture and Programmer's Guide书中提到,Le 字段最多允许 255。

我们是否将 APDU 命令解释如下:

|<----------------------- 255 Bytes total ------------------------>|
|<- CLA -><- INS -><- P1 -><- P2 -><- Lc -><---- DATA ----><- Le ->|

因此,如果 CLA、INS、P1、P2、Lc、Le 均为 1 字节,我们应该假设我们只能安全地将 249 字节设置到 DATA 区域?

对于 APDU 响应,我们解释为:

|<----------------------- 258 Bytes total ------------------------>|
|<-------------------------- DATA ------------------------><- SW ->|

响应数据可以安全地设置为 256 字节,其中包含 2 字节的 SW,并且由数据响应和 SW 组成的响应总计为 258 字节?

考虑到我们必须面对不可能进行链接并且我们必须自己手动处理数据流的情况,安全地发送和接收块数据还有哪些其他考虑因素?


据我所知Le字段允许 1-256 字节(255 的限制是为了Lc)引用ISO 7816-3:

Case 2S — 短 Le 字段由 C(5) 组成,编码 Ne 从 1 到 256('00'表示最大,256)......
....
案例 4S ⎯ ...短 Le 字段由 C(6+Nc) 组成,编码 Ne 从 1 到 256(“00”表示 最大,256)...

(并且它符合你的“Response APDU”长度256+2,也许这只是一个错字)

255 字节的限制是针对“Command APDU”的 DATA 部分。因此,对于整个非扩展长度“命令 APDU”,限制应该是5+255+1.

所有这些限制均在中精确定义ISO 7816-3——看这里。


请注意,javacard 的 APDU 缓冲区might更小。来自 javadocAPDU class:

缓冲区长度(即 APDU 缓冲区)必须至少为 133 个字节(5 个字节的标头和 128字节数据)

因此,要读取长度超过 128 字节的传入数据,您可能需要调用APDU.receiveBytes()获取剩余的不适合的字节。

相同might申请发送数据(即APDU.sendBytes() might需要发送更长的数据)。


对于应用程序级别框架,我知道这些方法(可能会鼓舞人心):

  • ISO 7816-4(使用 CLA 中的位 5)

  • 全球平台(使用最高有效位P1指示某些命令的更多块/最后一个块)

  • EMV CPS(使用数据内显式长度的 STORE DATA 命令)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safe Max Java 卡 APDU 数据命令和响应大小 的相关文章

  • “安全条件不满足”响应 APDU 是什么意思?

    我正在使用 Android NFC API 玩我的 NFC 卡 我被这个 APDU 响应困住了 安全条件不满足 SW1 69 SW2 82 谁能向我解释一下这个回复是什么意思 这是一个相关问题 69 82 安全条件不满足 Android N
  • 读取EMV卡公共数据

    说我想读书publicEMV 卡的要素 我将列出一些我认为涉及的步骤 1 First select application In order to select application we must 1 find out AID of a
  • 验证充气城堡上的 javacard 签名 ALG_ECDSA_SHA

    我的问题如下所示 我在 javaCard jcdk 2 2 2 上生成签名 当我想使用 BouncyCastle 在终端上验证它时 签名并不总是经过验证 3 66 中的 1 100 次尝试的平均值 签名是验证完毕 其余返回 false 当我
  • 如何从智能卡获取 CPLC 数据?

    我在用着GPShell在带有智能卡读卡器 型号为 ACR122 的 Ubuntu VM 上 我使用几种不同的 NXP SmartMX 芯片 使用他们的Android 标签信息应用程序 当我扫描一个特定的 SmartMX 芯片时 我能够看到
  • JavaCard 的数学库?

    我目前正在开发一个 JavaCard 项目 v 2 2 2 我需要使用平方根 对数等来计算值 我知道Math类在 JavaCard API 中不可用 想知道是否存在另一个提供此类操作的库 而且我也不能用double价值观 但我需要 有没有一
  • 从 javacard 小程序读取大文件

    我正在编写一个小程序 它存储 3 个不同大小的文件 5 Kb 7 Kb 和 11 Kb 我在小程序中存储文件没有任何问题 但是当我尝试读回它们时 我只能读取前两个 较小的文件 第三个文件抛出异常 javax smartcardio Card
  • jcop 小程序上传错误

    我是 Java 卡开发的新手 我用jcop工具作为开发套件 当我在 Eclipse 中运行简单的小程序时 出现此错误 在运行配置中我选择Java卡模拟模式 在模拟模式下成功安装后 我想在java卡中安装应用程序 cm gt upload b
  • 验证和认证的区别?

    如您所知 我们通过以下方式向卡证明我们是真实用户INITIAL UPDATE and EXTERNAL AUTHENTICATION命令 如下 lt 80 50 00 00 08 Host Challenge gt lt 84 82 03
  • 智能卡读卡器访问时出现未知错误 0x16

    我正在尝试更改 ACR1252U 上的蜂鸣器持续时间 API 链接 http www acs com hk download manual 6402 API ACR1252U 1 09 pdf http www acs com hk dow
  • 命令 APDU 在结果中返回 6985(不满足使用条件)

    我正在研究用 Java 读取智能卡 当我执行下面的代码时 卡返回 6985 不满足使用条件 TerminalFactory factory TerminalFactory getDefault List
  • 用于获取智能卡序列号的 APDU 命令

    如何使用 APDU 命令获取智能卡的序列号 我尝试使用 SCardGetAttrib 函数来查询它winscard dll不幸的是 我被告知使用 APDU 命令来执行此操作 因为没有标准方法来获取序列号 问题是我无法弄清楚我的智能卡是什么类
  • JAVACARD2.2中selectApplet()方法的功能是什么

    正如 JavaCard 2 2 API 文档中提到的here http www win tue nl pinpasjc docs apis jc222 javacard framework Applet html selectingAppl
  • 带有 ACR122U 的 libnfc 对 SELECT(通过 AID)APDU 没有响应

    See NFC 读取器 SELECT 通过 AID APDU 未路由到 Android 设备 https stackoverflow com q 50316799 2425802关于调试和最终结果 TL DR 读者可能已经不复存在了 我有
  • 在 Android 上使用 NFC 软件卡模拟控制完整的 APDU

    我正忙于开发一个应用程序来模拟 Nexus 7 上使用 CM10 1 与 ACR122U102 读取器 写入器的正常 APDU 通信 我发现这个博客是关于软件卡模拟 http nelenkov blogspot nl 2012 10 emu
  • 扩展 APDU 和 T=0/1 通信协议

    我有一个 JCOP V2 4 2 R3 java 卡 它的数据表中提到 该卡支持T 1 and T 0通信协议 我还有一个 ACR38 智能卡读卡器 它支持 T 0 和 T 1 协议 我与一张卡成功进行了 T 0 通信 并且与该卡成功进行了
  • 如何发送APDU到Mifare Classic 1k卡?

    我想要实现的是将 APDU 命令发送到 MIFARE Classic 1K 卡以更改其 A 和 B 密钥 我能够与卡建立连接并使用默认密钥 FFFFFFFFFFFF 来读取块 0 和块 1 我使用了 HID MifareSamples 应用
  • 使用 PC/SC 读卡器验证 Ultralight EV1

    我在尝试使用 Java 中的 PC SC 读卡器 特别是 ACR1222L 验证 Ultralight EV1 卡时遇到问题 我能够使用 ISO 14443 3 标签的相应 APDU 在不受保护的标签上进行写入和读取 但是 我找不到运行 P
  • 编码用于验证 PIN 的 APDU 命令时出现问题

    我正在尝试使用发送验证 pin 命令javax smartcardioAPI 我的密码是 12345678 根据我在网上找到的一些示例 我尝试使用此 APDU 00 20 00 83 08 01 02 03 04 05 06 07 08 但
  • 获取数据APDU命令不同的标签和响应格式

    你可能知道 全球平台卡规格 http globalplatform org specificationscard asp定义了一个名为Get Data从智能卡检索一些信息 全球平台专业版 https github com martinpal
  • 现实世界中的 JavaCard 3?

    我目前正在从事我的文凭工作 部分工作包括开发JavaCard常规小程序SIM牌 第一个选项是使用JavaCard2 X API并使用APDU与小程序通信的命令 这可能非常棘手 因为我需要为 android 开发客户端应用程序 它将与这个小程

随机推荐

  • 无法初始化集群。请检查您的配置中的mapreduce.framework.name和相应的服务器地址-提交job2remoteClustr

    我最近将集群从 Apache Hadoop1 0 升级到 CDH4 4 0 我在另一台机器上有一个 weblogic 服务器 我通过 mapreduce 客户端将作业提交到这个远程集群 我仍然想使用 MR1 而不是 Yarn 我已经根据 C
  • 使用 advapi32.dll:LogonUserA() 模拟远程计算机的本地用户

    我需要能够在远程计算机上运行 RegLoadKey 并且可能我的计算机和远程计算机不在同一域中 如果是的话 下面的代码可以正常工作 我可以模拟在计算机上具有管理员权限的用户 否则 如果我们谈论本地用户 我发现我的计算机上必须有一个具有相同用
  • sliderInput 最大/最小文本标签

    我目前正在开发具有多个滑块输入的仪表板 是否可以用文本替换最大和最小标签 例如 我的 min 1 和 max 10 我想将比例保持在 1 到 10 之间 同时让滑块标签分别显示为 较早 和 较晚 Thanks 遗憾的是 简短的回答是否定的
  • 在 D3.js 中缩放或平移时限制域

    我实现了一个简单的 D3 js 折线图 可以缩放和平移 它基于 Stephen Bannasch 的优秀示例here 我的数据域是 x 维度中的 0 n 如何使用内置缩放行为 即使用鼠标滚轮事件 将缩放和平移限制到此域 我想防止用户在下端平
  • 在 Webview 中打开输入类型文件的相机未打开 Android

    我是安卓新手 我正在创建一个小应用程序来拍照并将其上传到服务器 我正在使用 Webview 和 html 表单来做到这一点 在浏览器 chrome 中相机正在打开 但在 webview 中 单击 选择文件 时不会打开相机 有人知道解决办法吗
  • 分割字符串并返回mssql中最大的

    我需要找到一种方法来获取具有最高versionNumber的数据 这是我的数据库设计 VERSIONNUMBER varchar 15 DOWNLOADPATH varchar 100 假设我有这样的记录 VERSIONNUMBER DOW
  • 如何禁用浏览器上的 F5 刷新?

    最好使用 JavaScript 但也想听听其他方法 这将禁用 F5 但不会禁用实际的刷新功能 document onkeydown function e if e keyCode 116 return false 至少在 Chrome XP
  • opengl创建一个用于读取的深度模板纹理

    我在应用程序中使用延迟渲染 并尝试创建一个包含深度和模板的纹理 glTexImage2D GL TEXTURE 2D 0 GL DEPTH24 STENCIL8 width height 0 GL FLOAT 0 现在 opengl 对于这
  • 带有空格、双引号、管道的批处理文件参数

    我有一个批处理文件 需要传递一个包含管道和空格的参数 由于存在空格 因此在传入参数时需要将双引号附加到参数上 我需要去掉这些双引号并回显参数 通常 使用 可以让我做到这一点 但我认为我传入的特定参数会导致问题 如果我这样做 测试1 bat
  • Pandas 通过行号(不是行索引)和列名称获取单元格值

    data tom 10 nick 15 juli 14 df pd DataFrame data columns Name Age index 7 3 9 display df df iat 0 0 我想返回第一行中的年龄 基本上类似于 d
  • 用 C 写入 CSV 文件 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我的 C 程序生成此数据 我需要将其放入 CSV 文件中 以便其他程序可以使用它 我怎样
  • Android - 加速下降(粉碎)

    视频为不懂的人讲解 此答案未正确回答 请尝试使用其他解决方案来回答 100 赏金已过时 同样的问题 但更好的解释 这个问题被认为是正确的 但根本不是 我用我的旧设备 ZTE 尝试过 大部分时间都有效 但现在我有一台三星 Galazy A5
  • 异步/等待类构造函数

    目前 我正在尝试使用async await在类构造函数中 这样我就可以定制e mail我正在开发的 Electron 项目的标签 customElements define e mail class extends HTMLElement
  • 应用程序中的最大活动量?安卓

    Android 应用程序中有类似最大活动的东西吗 我想知道 因为我正在考虑创建具有铃声功能的声音应用程序 它将有大约 40 项活动 但只有 1 个会持续运行 是不是太多了 我应该寻找其他方法吗 解释为什么我需要 40 项活动 我有 30 个
  • Python 中的不变性 [重复]

    这个问题在这里已经有答案了 我试图了解 python 中的不变性是如何工作的 由于字符串在 python 中是不可变的 所以我希望每次执行字符串操作时 id 都会改变 但它没有按预期工作 例子 对 t 的最后一次操作不会更改其 id 有什么
  • 使用 Crypto++ 的 AES 示例 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我一直在互联网上搜索goodc AES 代码示例 教程 教授加密技术的基础知识和库的使用 但到目前为止我还没有运气获得像样的材料 好 易于理解 只是移动学习的基础知识 官方文件加密
  • 运行 Heroku 控制台无法启动

    我正在尝试运行 Heroku 控制台 但在控制台中 我收到消息 运行连接到终端的控制台 但控制台没有启动 在 Heroku 日志中 我收到错误 Error no child processes attached 有什么帮助吗 我刚刚与 He
  • jsp:setproperty property="*" 是什么意思?

  • 在xaml中将html字符串内容绑定到Webview

    我的 xaml 中有一个 webview 如下所示
  • Safe Max Java 卡 APDU 数据命令和响应大小

    Java Card APDU 中建议的数据字段大小是多少 来自陈志群的Java Card Technology for Smart Cards Architecture and Programmer s Guide书中提到 Le 字段最多允