命令 APDU 在结果中返回 6985(不满足使用条件)

2023-12-25

我正在研究用 Java 读取智能卡。当我执行下面的代码时,卡返回 6985(不满足使用条件)。

  TerminalFactory factory = TerminalFactory.getDefault();
  List<CardTerminal> terminals = factory.terminals().list();
  System.out.println("Terminals: " + terminals);

  if (terminals != null && !terminals.isEmpty()) {
   // Use the first terminal
   CardTerminal terminal = terminals.get(0);

   // Connect with the card
   Card card = terminal.connect("*");
   System.out.println("card: " + card);
   CardChannel channel = card.getBasicChannel();

   CommandAPDU commandAPDU = new CommandAPDU(0x00, 0xA4, 0x00, 0x0C,
   new byte[]{0002},0,0x01);

   ResponseAPDU responseCheck = channel.transmit(commandApdu);
   System.out.println(responseCheck.getSW1()+":"+responseCheck.getSW2()+":"+
   commandApdu.toString());

客户端提供的参数为:

  • CLA = 00
  • INS = A4
  • P1 = 00
  • P2 = 0C
  • LC = 02
  • Data = XXXX(这里传递的数据是文件标识符),因为我想选择EF文件,所以客户端给定的文件的EFID是0002

CommandAPDU commandAPDU = new CommandAPDU(0x00, 0xA4, 0x00, 0x0C, new byte[]{0002},0,0x01);

不会做你期望它做的事情。

new byte[]{0002}将为您提供一个字节数组,其中一个字节的值为 2。此外,,0,0x01);(最后两个参数)将使构造函数仅从 DATA 数组中选取一个字节。所以你的 APDU 将如下所示:



+------+------+------+------+------+------+------+
| CLA  | INS  | P1   | P2   | Lc   | DATA | Le   |
| 0x00 | 0xA4 | 0x00 | 0x0C | 0x01 | 0x02 | ---  |
+------+------+------+------+------+------+------+
  

这可能不是您所期望的。你想要吗new byte[]{0, 2}反而?使用

CommandAPDU commandAPDU = new CommandAPDU(0x00, 0xA4, 0x00, 0x0C, new byte[]{0, 2}, 256)

将产生以下 APDU(请注意,Le 存在并设置为 0 (Ne = 256);Lc 是根据 DATA 数组的大小自动推断出来的):



+------+------+------+------+------+-----------+------+
| CLA  | INS  | P1   | P2   | Lc   | DATA      | Le   |
| 0x00 | 0xA4 | 0x00 | 0x0C | 0x02 | 0x00 0x02 | 0x00 |
+------+------+------+------+------+-----------+------+
  

Or using

CommandAPDU commandAPDU = new CommandAPDU(0x00, 0xA4, 0x00, 0x0C, new byte[]{0, 2})

将产生以下 APDU(请注意,Le 不存在 (Ne = 0);Lc 是根据 DATA 数组的大小自动推断出来的):



+------+------+------+------+------+-----------+------+
| CLA  | INS  | P1   | P2   | Lc   | DATA      | Le   |
| 0x00 | 0xA4 | 0x00 | 0x0C | 0x02 | 0x00 0x02 | ---  |
+------+------+------+------+------+-----------+------+
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

命令 APDU 在结果中返回 6985(不满足使用条件) 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 用于组合搜索和排除的正则表达式

    概述 我正在尝试将两个 REGEX 查询合并为一个 d d d d 10 169 我将其写为两部分查询 第一部分将在文本块中隔离 IP 在复制并粘贴此内容后 我选择所有内容 但不包括 10 或 169 问题 看来我把这个问题过于复杂化了 有
  • 是否可以从数组创建打字稿类型?

    我经常使用诸如 export type Stuff something else export const AVAILABLE STUFF Stuff something else 这样我就可以使用类型Stuff 并在需要时迭代所有可用的内
  • 我可以在带有phonegap的移动设备上使用html5的拖放功能吗?

    我需要使用phonegap 拖放到移动设备 我尝试使用 jquery mobile 和 jquery ui jquery touchpunch 但 html5 对我来说更好 是否可以 谢谢 弗朗西斯科 EDIT 这是一个可拖动的图像 a h
  • 在视图控制器上添加导航栏

    我是 iOS 新手 我想在我的视图控制器上添加一个导航栏 左侧有 2 个按钮 右侧有订阅按钮 我不知道如何做到这一点 到目前为止 我刚刚从界面生成器添加了一个导航栏 在 h 文件中为其创建了一个 强 引用 并进行了以下编码 navBar U
  • 按钮内的复选框?

    有什么方法可以在按钮内添加复选框吗 目前我有这个解决方案 div div
  • psycopg2:光标已关闭

    我在用psycopg2 2 6 1 我有很多需要按顺序执行的查询 conn psycopg2 connect database redshift database user redshift user password os environ
  • 将 .NET Core Identity 与 API 结合使用

    我创建了一个 API 并从同一 API 设置了 JWT 身份验证 我选择不使用 IdentityServer4 我通过这样做services AddAuthentication 然后我在控制器中创建了令牌并且它起作用了 不过我现在想添加注册
  • 无法对 DataGrid 中的日期列进行排序

    我添加了一个日期列DatePicker to my DataGrid并且无法通过单击来对该列进行排序Header 我想这与我的日期格式有关 但我找不到解决方案 我的代码是
  • 在传递到 Web 服务之前将 jqGrid rowNum 从 ALL 更改为 -1 的最佳方法

    我正在寻找允许用户选择在 jqGrid 中显示所有记录的最佳方法 我知道为 rows 参数传递的 1 值表示 ALL 但我希望单词 ALL 而不是 1 出现在 rowList 选择元素中 即 行列表 15 50 100 全部 我正在将网格请
  • 改造android的Proguard规则

    我正在对 Android 应用程序实施混淆器规则 当我编译该 apk 时 改造类仍然没有改变 请看一下我的 proguard 文件 并请指导我哪里缺少规则 keep public class org slf4j keep public cl
  • 如何在Tab布局中设置Tab宽度?

    我正在尝试创建一个tab layout其中有两个tabs 当我在小型手机上运行该应用程序时tab layout看起来不错 但是当我运行相同的应用程序时Tablet它显示如下 在平板电脑上看起来像这样 我希望每个选项卡占据整个空间 两端没有任
  • Javascript 验证 HTML 表单中的 X 个字段

    我有一个表单 其中包含大约 10 个文本条目 用户 地址 电子邮件等 大约有 50 多个条目是数量条目 用户选择该条目的 2 倍 该条目的 5 倍 现在 我从其他人那里继承了这张表格 现在我有责任在客户要求时保持最新状态 我不想全部重写 但
  • 如何将 core-js Map 导入 angular-cli webpack 生成的应用程序

    1 0 0 beta 11 webpack 现在使用 core js 进行 polyfill 我正在尝试导入地图以在我的应用程序中使用 import Map from core js es6 map import Map from core
  • 为什么合并 PDF 会使文件大小变大?

    我正在尝试将各种 PDF 拆分在一起 它们的文字不多 偶尔会有图像 举例来说 我有两个 PDF 1 4Mb 和 740kb 当我将它们合并时 它们会膨胀到 6Mb 我尝试过脚本化组合和手动附加 结果相同 所以我猜测这是一个根本问题 对为什么
  • 上下文在 Code First 模式下使用,其中的代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发

    我正在尝试将最初使用 EF4 开发的项目迁移到 EF6 以利用 EF6 事务管理 我面临的问题是该项目是使用数据库优先方法创建的 所以当我使用类似的代码时context Database UseTransaction 我遇到以下错误 The
  • Sublime text:如何将键绑定添加到 hex_viewer 包命令

    我已经在 sublime text 3 上安装了 Hex Viewer 包 为了切换它 我使用 ctrl shift p 打开命令面板 然后我搜索 hex 并选择包的命令来切换十六进制视图 我想知道如何将键绑定到特定的包命令 我知道键绑定配
  • IISExpress 用户界面 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚下载并安装了 IIS Express 从命令行运行它一切正常 但是我如何配置它的选项 是否有一个
  • Python os.path.relpath 行为

    我有一个目录bar在目录内foo 带文件foo file txt在目录中foo和文件bar file txt在目录中bar i e computer ls foo computer ls foo bar foo file txt compu
  • 云优化与云原生

    在尝试更好地理解云原生应用程序时 我遇到了云优化这个术语 有人可以帮助我了解云优化与云原生之间的区别吗 云优化涉及应用程序如何迁移到云或在那里开发和托管 如何通过优化过程来提供更多价值 降低成本 标准化事物 最初 一旦迁移或托管在云中 由于
  • 命令 APDU 在结果中返回 6985(不满足使用条件)

    我正在研究用 Java 读取智能卡 当我执行下面的代码时 卡返回 6985 不满足使用条件 TerminalFactory factory TerminalFactory getDefault List