因项目需要,利用APDU通信协议在ME手机端和卡端进行通讯。在实践的过程中遇到一些问题,先记录如下。

APDU协议,即是智能卡与读写器间的应用层协议,在ISO7816-4[7]中定义了该协议的结构格式。APDU数据有两种结构,读写器使用的APDU结构为命令APDU,C-APDU(Command APDU),智能卡方面使用的APDU结构为响应APDU,R-APDU(Reponse APDU)。

命令APDU

必选部分:CLA, INS, P1, P2

可选部分:LC, 数据段, LE

CLA确定APDU的类别,INS确定要执行的指令,P1和P2是参数。

LC确定数据段的长度,数据段是发送到智能卡上的数据,LE确定读写器期待智能卡响应的字节数。

响应APDU

可选部分:数据段

必选部分:SW1, SW2

数据段的长度由命令APDU的LE确定。

SW1和SW2是状态字。

卡侧APDU编程实践

JAVACARD有一系列APDU处理的方法可以调用,详情可以查看相应的说明文档。先简单记录下我在实践过程中遇到的一些问题,及相应的答案。

在处理一个APDU命令前,首先要调用getBuffer命令取得APDU缓冲区数组的引用,通过该数组的引用,即可访问APDU缓冲区数组的内容。

public voidprocess(APDU apdu) {byte[] buffer =apdu.getBuffer();switch(buffer[ISO7816.OFFSET_INS]) {

}

}

首先要注意两点,第一:其中取得缓冲数组的引用给buffer时,注意buffer需在方法中定义,即定义为局部数组。第二:此时获得的buffer数组中仅仅包含APDU的命令头,即CLA, INS, P1, P2,P3,不包括后续的数据(即P3后的数据)。如需接受完整的APDU指令,需要利用

byte buffer[]=apdu.getBuffer();short bytesRead=apdu.setIncomingAndReceive();

注意apdu.setIncomingAndReceive()返回数据长度,为命令头后面的数据长度,即LC的值。

原文:http://www.cnblogs.com/vimzhu/p/5797581.html

java卡 apdu_java智能卡APDU学习笔记相关推荐

  1. Java智能卡 技术_java智能卡APDU学习笔记

    因项目需要,利用APDU通信协议在ME手机端和卡端进行通讯.在实践的过程中遇到一些问题,先记录如下. APDU协议,即是智能卡与读写器间的应用层协议,在ISO7816-4[7]中定义了该协议的结构格式 ...

  2. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  4. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  5. 拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  6. 拉勾网《32个Java面试必考点》学习笔记之一------Java职业发展路径

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  7. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java开发面试高频考点学习笔记(每日更新)

    Java开发面试高频考点学习笔记(每日更新) 1.深拷贝和浅拷贝 2.接口和抽象类的区别 3.java的内存是怎么分配的 4.java中的泛型是什么?类型擦除是什么? 5.Java中的反射是什么 6. ...

  9. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  10. 杨晓峰-java核心技术36讲(学习笔记)- 第1讲 | 谈谈你对Java平台的理解?

    杨晓峰-java核心技术36讲(学习笔记) 接下来我会分享杨晓峰-java核心技术36讲的学习笔记,内容较多,补充了其中一些牛人评论,相对详细(仅供个人学习记录整理,希望大家支持正版:https:// ...

最新文章

  1. python爬虫新手项目-33个Python爬虫项目实战(推荐)
  2. netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码
  3. mysql putty 备份_Linux下mysql数据库的备份-putty
  4. MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
  5. android+百度lbs云,百度——LBS.云 v2.0——云存储扩展字段——Android
  6. java在类中创建一个对象_在另一个类中创建类对象
  7. 9个超级实用的 ES6 特性,超级实用哦!
  8. 算法学习(6)----整数转换为格雷码
  9. 路径规划之图规划算法(图片版)
  10. sql server managerment 给表加说明
  11. Tp 引入 simple_html_dom.php
  12. 2010计算机一级选择题,计算机一级考试选择题题库(2010年最新版)
  13. 基于BP神经网络的PID控制器
  14. TypeScript基本语法(W3C)
  15. 拼接模型坐标系的理解(五)
  16. 概率论基础(sigma域、测度)
  17. ✨ StarRocks 11 月社区动态
  18. Exchange ActiveSync 配置
  19. 【佳学基因人工智能解码技术系列】在CENTOS环境下安装ANACOND
  20. PTA(02)典例详解(7-48 龟兔赛跑7-49 币值转换7-51 念数字7-53 抓老鼠啊~亏了还是赚了?7-56 谁先倒7-58 输出GPLT7-60 福到了)

热门文章

  1. 电容触摸屏测试软件,大规模生产中如何测量触摸屏电容值
  2. 【STM32H7的DSP教程】第27章 FFT的示波器应用
  3. Latex:IEEE Trans期刊Latex模板下载
  4. autocad 如何摆正显示_AutoCAD使用技巧问答
  5. 服务器部署Java项目详述
  6. Jenkins File Matrix 对于label设置环境变量
  7. 台电幻彩(t4jn)系列u盘量产修复工具
  8. 今天第一次做PIZZA,很成功.
  9. 初中计算机flash基本知识,初中信息技术flash课件
  10. 肯辛通VeriMark指纹识别器 驱动下载 与 安装指南(含视频教程) 型号:K67977 K64704 K62330