java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU
我已经使用 javax.smartcardio 从智能卡读取序列号而不需要太多努力 . 但是现在我被读取了 . 我正在根据ISO 7816指南创建APDU命令,但由于我的十六进制值被转换为错误的字节,因此无法创建正确的APDU命令 .
import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.CommandAPDU;
import javax.smartcardio.ResponseAPDU;
import javax.smartcardio.TerminalFactory;
class SmartCardAPIs {
public int Create_MF() throws CardException{
//--Variable declaration
int result=0;
Card card=null;
byte[] responseData=null;
ResponseAPDU answer=null;
String SW1=null;
String SW2=null;
int cla, ins, p1, p2;
byte[] data=null;
//---------------------------------------------
//--1--Establish connection with the smart card
TerminalFactory factory = TerminalFactory.getDefault();
List terminals = factory.terminals().list();
// Use the first terminal
CardTerminal terminal = terminals.get(0);
// Connect with the card
card = terminal.connect("*");
CardChannel channel = card.getBasicChannel();
//---------------------------------------------
//--2--Create MF
cla=0x00;
ins=0xE0;
p1=0x00;
p2=0x00;
data = new byte[] {
(byte) 0x21,
(byte) 0x62,
(byte) 0x1F,
(byte) 0x82, // **** Getting converted to -126 ****
--
--
--
};
answer = channel.transmit(new CommandAPDU(cla, ins, p1, p2, data));
responseData= answer.getBytes();
if(responseData!=null)
{
if(responseData.length==2)
{
SW1=String.format("%02X ", (responseData[0])).trim();
SW2=String.format("%02X ", (responseData[1])).trim();
}
}
}
}
我有两个问题
1:命令中的数据APDU采用错误的字节(标记为 ***** ) .
2:SW1和SW2返回为6A 80,这意味着数据字段中的参数不正确(我猜是因为在以十六进制格式将int转换为字节时为负值,但由于我不得不这么做而无法帮助) .
我在这里放置的部分APDU命令是我提供的完整命令的一部分,命令是100%正常并经过测试,因为我已成功使用智能卡工具使用命令在空白卡中创建MF我现在想在java中做同样的事情 .
我认为问题在于这个APDU被创建的方式,可能是负值问题(虽然我已经创建了Applet来从卡读取序列号,但我对java APDU的东西不是很专业) .
java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU相关推荐
- M100嵌入式自动吞吐式读写器|电动读卡机如何通过C#程序读取社保卡号
M100嵌入式自动吞吐式读写器|电动读卡机是一款双保护门功能读卡器,第一层防尘防异物机械门,第二层电动门. M100嵌入式自动吞吐式读写器|电动读卡机采用耐高温.耐磨擦.高强度.抗老化的复合型塑胶为主 ...
- 社保数据保存现java提示_读取社保卡信息
08 社会保障卡号码 cn 12 | 09 ...
- java如何读取ic卡_java读取IC卡设备
有几个项目都用到IC卡设备,IC卡供应商提供的例程里没有java的例子,调试过程发现各种问题,总算是测试通过了,mark一下. 基本思路:通过JNative.jar包调用dll方式,读取IC卡的序列号 ...
- java读取社保卡_id 社保卡信息读取 使用读卡器对社保卡信息读取 - 下载 - 搜珍网...
新版读卡器 新版读卡器/ADVPACK.DLL 新版读卡器/ANIGIF.oca 新版读卡器/ASYCFILT.DLL 新版读卡器/AniGIF.ocx 新版读卡器/COMCAT.DLL 新版读卡器/ ...
- JAVA 的读取Excel方法_纯Java的方式读取excel2007
* 首先介绍excel2007文件的格式,这里单只工作表文件,不包括加载宏的以及其他格式的,即.xlsx扩展名的 * 你可以把Book1.xlsx这个文件用解压缩文件打开,这是office2007的新 ...
- java audioinputstream 读取音频文件_从原始文件中获取最多x个字节的AudioInputStream(剪切音频文件)...
小编典典 下面的代码向您展示如何复制音频流的一部分,从一个文件读取并写入另一个文件. import java.io.*; import javax.sound.sampled.*; class Aud ...
- Java实现混音 音频合成_使用javax.sound实现简单音频播放
本文实例为大家分享了javax.sound实现简单音频播放的具体代码,供大家参考,具体内容如下 /** * @see * @author Al_assad yulinying_1994@outlook ...
- java word 读取excel数据_在Java中实现读写操作Word、Excel等文件
Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook.HSSFSheet.HSSFRow.HSSFCe ...
- java poi 读取xlsx文件_使用POI读取xlsx文件(SXSSFWorkbook)
我正在尝试使用POI来读取大型xlsx文件的第一次测试,但要使用小文件进行简单测试,我无法显示单元格的值.使用POI读取xlsx文件(SXSSFWorkbook) 有人可以告诉我什么是我的错误.所有的 ...
最新文章
- Android之PullToRefresh控件源码解析
- 单例带来的线程安全问题
- python中的魔法属性和方法
- linux 完全卸载软件方法
- 深入理解== 和 equals 的区别
- h3c trunk口改access_H3C交换机二层应用及三层交换基本配置
- 异常捕获,返回错误码code给前端
- 在Mac中用快捷键快速插入日期时间
- RK3288_Android7.1平台基于DRM框架的LCD开发
- 记一次守护日志导致硬盘空间告警问题
- win10 64位系统 excel2016 vba odbc方式 访问 oracle远程数据库 免安装oracle客户端
- 最好用的100个黑科技网站
- IDEA 使用mybatis插件Free Mybatis plugin
- Golang中defer、return、返回值之间执行顺序的坑
- 自己动手做个智能小车(2)
- win7如何设置通电自动开机_win7系统如何自动开机|win7自动开机的方法
- html页面字体美化,网页字体的美化-网页设计,HTML/CSS
- 微信小程序,不可不知的一二三四
- 剑指 Offer 14.剪绳子(动态规划、数学分析)
- 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。