APDU指令返回码及其代表含义

9000 正常 成功执行
6200 警告 信息未提供
6281 警告 回送数据可能出错
6282 警告 文件长度小于Le
6283 警告 选中的文件无效
6284 警告 FCI格式与P2指定的不符
6300 警告 认证失败
63Cx 警告 PIN校验失败(X表示允许重试次数)
6400 出错 状态标志位没有变
6581 出错 内存失败
6700 出错 Lc错误
6881 出错 不支持逻辑通道
6882 出错 不支持安全报文
6884 出错 不支持命令链
6901 出错 (命令不接受)无效状态(如卡已锁定,MF未建立)
6981 出错 命令与文件结构不相容,当前文件非所需文件
6982 出错 操作条件(AC)不满足,没有校验PIN
6983 出错 认证方法锁定,PIN被锁定
6984 出错 随机数无效,引用的数据无效
6985 出错 使用条件不满足
6986 出错 不满足命令执行条件(不允许的命令,INS有错)
6987 出错 MAC丢失
6988 出错 MAC不正确
698D 保留
6A80 出错 数据域参数不正确
6A81 出错 功能不支持;创建不允许;目录无效;应用锁定
6A82 出错 该文件未找到
6A83 出错 该记录未找到
6A84 出错 文件预留空间不足
6A86 出错 P1或P2不正确
6A88 出错 引用数据未找到
6B00 出错 参数错误
6Cxx 出错 Le长度错误,实际长度是xx
6E00 出错 不支持的类:CLA有错
6F00 出错 数据无效
6D00 出错 不支持的指令代码
9301 出错 资金不足
9302 出错 MAC无效
9303 出错 应用被永久锁定
9401 出错 交易金额不足
9402 出错 交易计数器达到最大值
9403 出错 密钥索引不支持
9406 出错 所需MAC不可用
6900 出错 不能处理
6901 出错 命令不接受(无效状态)
61xx 正常 需发GET RESPONSE命令
6600 出错 接收通讯超时
6601 出错 接收字符奇偶错
6602 出错 校验和不对
6603 警告 当前DF文件无FCI
6604 警告 当前DF下无SF或KF
--------------------- 

APDU= ApplicationProtocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元, (给智能卡发送的命令)指令(ISO 7816-4规范有定义)    CLA   INS  P1  P2 Lc  Data  Le

其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。

00A4040000:发送一个空的选择命令,获取卡和主安全域的信息。00A40400是select选择对应的CLA,INS,P1和P2,后面2位是发送的文件名的长度。此命令使用文件名或应用标示符来选择IC卡内DF(专用文件)或EF(基本文件)。

80此命令创建卡片文件系统,80CA9F7F00:获取CPLC信息。8050XXXXX:  双向认证并建立会话密钥。

非接触CPU卡应该支持以下与应用无关的常用指令命令:

编号

指令

指令类别

指令码

功能描述

 

APPLICATION UNBLOCK

84

18

应用解锁

 

APPLICATION BLOCK

84

1E

应用锁定

 

CARD BLOCK

84

16

卡片锁定

 

EXTERNAL AUTHENTICATE

00

82

外部认证

 

GET CHALLENGE

00

84

取随机数

 

INTERNAL AUTHENTICATE

00

88

内部认证

 

PIN UNBLOCK

84

24

个人密码解锁

 

READ  BINARY

00

B0

读二进制文件内容

 

READ  RECORD

00

B2

读记录文件指定内容

 

SELECT

00

A4

选择文件

 

UPDATE  BINARY

00/04

D6

写二进制文件

 

UPDATE  RECORD

00/04

DC

写记录文件

 

VERIFY

00

20

验证口令

 

编号

指令

指令类别

指令码

功能描述

 

CHANGE/PIN RELOAD

80

5E

重装/修改个人密码

 

CREDIT FOR LOAD

80

52

圈存

 

DEBIT FOR PURCHASE/
CASE WITHDRAW/UNLOAD

80

54

消费/取现/圈提

 

GET BALANCE

80

5C

读余额

 

GET TRANSCATION PROVE

80

5A

取交易认证

 

INITIALIZE FOR XXX

80

50

初始化XXX交易

 

UNBLOCK

80

2C

解锁被锁住的口令

 

UPDATE OVERDRAW LIMIT

80

58

修改透支限额

 

外部认证这块还是记一下吧。

    1、选择IC卡MF目录 00A4 0000 02 3F00 00
    2、给IC卡发送命令取随机数  0084000008 获取8位随机数1
    3、选择PSAM卡MF目录 00A4000002 3F00 00
    4、选择PSAM卡应用目录 00A4000002 1001 00
    5、PSAM卡初始化DES加密 801A 27 01 08 8位IC卡序列号
    6、PSAM卡DES加密 80FA 00 00 08 8位随机数1
    7、IC卡外部认证 0082 0001 08 8位随机数1

这是之前刷卡设备的认证步骤,卡的结构已经建立好了,现在用的是FM1216空卡,

而且我在数据手册上也未找到SAM卡的DES加密指令,这就尴尬了,怎么进行外部认证?

幸好是用的C#做PC端开发,有DES加密接口,空卡默认密钥是8个0xFF,那么直接用程序计算吧。。。

结果竟然认证通过了。。。

下面说下步骤

1、选择IC卡MF目录

2、给IC卡发送取8字节随机数命令

3、使用8个0xFF做密钥,8字节随机数做加密源用C#的系统API进行DES加密

4、将加密后的8字节随机数使用外部认证命令发送到IC卡,验证通过。

这里要说下C#里面DES加密是不允许弱密钥的,8个字节的0xFF会被视为弱密钥报警编译不通过,通过上网查找可通过反射进行强行加密解密
--------------------- 

 

1、选择IC卡MF目录 00A4 0000 02 3F00 00

2、选择IC卡应用目录

3、读取IC卡公共信息基本文件

4、获取IC卡的应用序列号

3、给IC卡发送命令取随机数  0084000008 获取8位随机数1

4、选择PSAM卡MF目录 00A4000002 3F00 00

5、选择PSAM卡应用目录 00A4000002 1001 00

6、PSAM卡初始化DES加密 801A 27 01 08 8位IC卡序列号(这个序号根据更应用不同定制不同,我这里用的是序列号做散数,看IC卡怎么来计算了,最终其实就是跟IC卡得出来的数比较一下就是了)

7、PSAM卡DES加密 80FA 00 00 08 8位随机数1 这时候会返回8位数据,叫DA吧

8、IC卡外部认证 0082 0001 08 8位数据DA,到此外部认证完成。

 
 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值