- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开始一个新项目,我是使用 EMV 阅读器和 Javax SmartCardIO 的新手。
我有每种卡的 RID 列表,但是在不知道卡类型的情况下我唯一可以访问的是 ATR,我想知道是否有办法获取 RID 或卡类型仅此信息,欢迎任何帮助。
提前致谢!
编辑:
我尝试用这种方法执行 select PSE 命令:
public static byte[] selectPSE(CardChannel channel) throws CardException {
byte[] selectPSE = {(byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00, (byte)0x0E, (byte)0x31, (byte)0x50, (byte)0x41, (byte)0x59, (byte)0x2E, (byte)0x53, (byte)0x59, (byte)0x53, (byte)0x2E, (byte)0x44, (byte)0x44, (byte)0x46, (byte)0x30, (byte)0x31};
CommandAPDU command = new CommandAPDU(selectPSE);
ResponseAPDU response = channel.transmit(command);
System.out.println(response.getBytes());
return response.getBytes();
}
但是,它只适用于 AMEX 和 Visa,我在使用两张万事达卡(信用卡和借记卡)时遇到错误 6a82。
这看起来很奇怪,据我所知,所有主要的发卡机构(包括万事达卡)都使用 1PAY.SYS.DDF01,我可以通过 AID 的尝试和错误获得我想要的信息,但我不认为这是是最好的解决方案。
最佳答案
AID(应用程序 ID)= RID(已注册的应用程序 ID)|| PIX(属性(property)申请扩展)
识别卡上安装了哪些应用程序的最佳方法是选择PSE。详细说明在EMV Book 1, 12 Application Selection, 12.3.2 Using the PSE .
您可以在图 17 中找到完整算法:使用目录的终端逻辑。
快速算法:
1) 命令选择 PSE 或 PPSE。
Send: 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
Responce will will contain:
'6F' FCI Template M
'84' DF Name M
'A5' FCI Proprietary Template M
'88' SFI of the Directory Elementary File M
'5F2D' Language Preference O
'9F11' Issuer Code Table Index O
'BF0C' FCI Issuer Discretionary Data O
在这里您可以找到 PSE 的 SFI。
2) 命令ReadRecord 1 SFI X
Send: 00 B2 01 0C 00
Receive list of tag.
'70' Application Elementary File (AEF) Data Template
'61' Application Template
'70' Application Elementary File (AEF) Data Template
'61' Application Template
'4F' Application Identifier (AID)
'50' Application Label
... and so on
在此处查找标记“4F” 应用程序标识符 (AID)。您可以从中提取和比较 RID。
你还可以:
1) 获取自己的AID列表,依次从中选择应用。
2) 选择默认或下一个应用程序并从响应中获取 AID。
关于java - SmartCardIO EMV 读卡器,仅通过 ATR 编号查找我的卡类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36297722/
我使用 Faker gem 来播种某些数据。我怎样才能设置最大。假公司名称的长度,如何设置假号码的范围? name = Faker::Company.name 这里我想包括最大长度,因为名称对最大长
我试图实现一种方法,在该方法中我创建一个记分板(while 循环)并按某个数字字段(点)对获取的结果进行排序。但我需要实现的是如下 rank----username--point 1st------t
如何在 ListView (vsReport) 中对项目进行编号?现在我有类似的东西: Item := ListView1.Items.Add; Item.Caption :=inttostr(Ite
我正在尝试使用几个按钮在红色和绿色之间切换,我已经浏览了 Jquery 文档,但我似乎无法弄清楚这个。 您可以在我的代码片段中看到,当我单击按钮时,所有按钮都会变成不同的颜色。 而且必须有一种更短的方
是否可以在 GROUP_CONCAT 中进行编号 喜欢 如果,来自 GROUP_CONCAT(empnam SEPARATOR ', ') 我有一套, 我需要 我试过跟随,但没有得到想要的结
在 Linux 中,如何使用用户指定的事件编号创建输入事件接口(interface)并将其映射到特定的设备事件? 我正在使用 gpio-keys 驱动程序来翻译键盘上的按键操作。我定义了要在我的板配置
对于低级应用程序,我在编译时将某种索引定义为一种类型: template class Idx{ using TYPE = T_; static const int IDX = IDX_; }
请问如何设置这种格式的编号: 1) number 1 2) number 2 3) ... 在 HTML 中? 我只找到了一种获取这种格式的方法: 1. number 1 2. number 2 3.
对于我的研究,我需要很少的数据,其中之一是前一次提交的 SHA 编号,即如果我提供特定的提交编号/SHA 编号,我应该能够获得它之前的 SHA 编号。 帮我用 git 命令来获得相同的结果。 最佳答案
我需要询问何时按下数字 1 键,而不是在数字键盘上,而是在 Q 上方的数字 1(试图使这尽可能清楚)。 我已经浏览了 Keys 数组上所有可用的键,但没有一个匹配我正在寻找的键。 有没有办法做到这一点
我正在尝试使用 NAnt 任务设置构建服务器。我有几个想要构建的 Git 存储库,但我在结果的版本控制方面遇到了问题。 如何对库 (dll) 进行版本控制,以便每个构建都使用一个数字来表示每个版本?我
我有一个如下所示的表格: +-------+--------+--------+ | Grp | Party | Member | +-------+--------+--------+ | F
我正在使用 SQL Server 2008。我在查询中返回了这些数据,看起来非常像按 Day 和 ManualOrder 排序的... ID Day ManualOrder Lat L
区域:Silverlight 中的文本框 问题:我需要知道当前编辑的是什么“行号”。 我试过:作为一种解决方法,我尝试使用 textBox.Split("\r") 进行拆分,并计算 Regex 上具有
提前致歉,我不确定如何将 null 值添加到 pandas 数据框,所以我在列表中放置了“无”。我有一个具有以下值的数据框: None, None, 50,60,70,80,90,None,None,
我的应用程序中有一个标签,其中会带有徽章编号,该标签基于3个不同时间发生的3种不同操作。我知道如何使用以下方式设置标签栏标志: [[[[[self tabBarController] tabBar]
有谁知道为什么我们的供应商需要我们的 sku 编号来开发新应用程序? 我们自己将应用程序带入应用程序商店,也许我错了,但构建应用程序或将其上传到商店不需要 sku - 它仅在 iTunes 中连接而不
这个问题已经有答案了: Rationale for Matcher throwing IllegalStateException when no 'matching' method is called
我使用[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]清除徽章编号。它工作正常,但同时删除了远程通知。 还有许多其
我有一个待办事项列表应用程序,我想在图标徽章中显示未完成任务的数量。 我的问题是:我是否应该在用户每次在应用程序中删除/添加新任务时更新徽章编号,还是仅在应用程序即将进入后台模式时更新徽章编号? 最佳
我是一名优秀的程序员,十分优秀!