云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > CPU基础知识为什么用CPU卡IC卡从接口方式上分

CPU基础知识为什么用CPU卡IC卡从接口方式上分

  • 62 次阅读
  • 3 次下载
  • 2025/5/25 22:13:38

FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

安装应用维护密钥DAMK[Write Key] APDU命令:80 (CLA)E8(INS) 00(P1) 00(P2) 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 05(密钥类型) 0F(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容)

建立公共应用基本文件[Create File] APDU命令:80(CLA) E0(INS) 02(P1) 00(P2) 07(Lc信息长度) 00 15 (文件标识符)00 (二进制文件类型)0F(读权限)FF(更新权限)00 1e(文件长度)

建立持卡者基本数据文件[Create File] APDU命令:80(CLA) E0(INS) 02(P1) 00(P2) 07(文件信息长度) 00 16 (文件标识符)00(二进制文件类型)0F(读权限)FF(更新权限) 00 27(文件长度)

建立交易明细文件[Create File] APDU命令:80(CLA) E0(INS) 02(P1) 00 (P2)07 (文件信息长度)00 18(文件标识符) 03(循环记录文件类型)1F(读权限)10(更新权限)0a 17(文件长度)

写公共应用基本数据文件[Update Binary] APDU命令:00(CLA)D6(INS)95(P1)00(P2)1E(信息长度)A0 00 00 00 03 00 00 01(发卡方标识)03(应用类型标识)01(应用版本) 00 00 19 98 08 15 00 00 00 01(应用序列号) 20 00 10 01 (应用启用日期)20 02 12 31(应用有效日期)55 66 (发卡方自定义FCI数据)

写卡持有者基本数据文件[Update Binary] APDU命令:00(CLA) D6(INS) 96(P1) 00(P2) 27(文件信息长度) 00(卡类型标识) 00(本行职工标识) 53 41 4d 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(持卡人姓名) 31 31 30 31 30 38 37 30 30 33 31 37 31 38 39 00(持卡人证件号码) 00 (持卡人证件类型)

建立电子钱包EP文件[Create File] APDU 命令:80(CLA)E0(INS)02(P1)00(P2)07(Lc)00 01(文件标识符)06(文件类型)00(权限1)00(权限2)00(LEN1)00(LEN2)

结束建立应用(DF)[Create End] APDU命令:80(CLA) E0(INS) 01(P1) 01(P2) 02 (文件标识符长度)2F 01(文件标识符)

结束建立MF [Create End] APDU命令:80(CLA) E0(INS) 00(P1) 01(P2) 02 (文件标识符长度)3F 00(文件标识符) 2) 交易过程

在此,我们以圈存过程及消费过程为例:

A、 圈存——将金额存入卡中

在圈存前必须先校对个人口令及01号外部认证;

选择应用[Select File]APDU命令:00(CLA)A4(INS)00(P1)00(P2)02(长度)2F 01(文件标识符)

校验PIN[Verify] APDU命令:00(CLA) 20(INS) 00(P1) 00(P2) 02(长度) 12 34(PIN)

外部认证:[ 取随机数[Get Challenge] APDU命令:00(CLA) 84(INS) 00(P1) 00(P2) 08

用01号外部认证密钥对随机数进行3DES加密;

外部认证[External Authentication] APDU命令:00(CLA) 82(INS) 00(P1) 01

(P2) 08(长度)XX XX XX XX XX XX XX XX (加密后的随机数) ]

圈存:[

初始化圈存[Initalize For Load] APDU命令:80(CLA) 50(INS) 00(P1) 02(P2) 0B(长度) 01(密钥标识符) 00 00 10 00(交易金额) 00 00 00 00 00 01(终 端机编号)

如果初始化圈存成功,则应答数据域内容: 说明 长度(字节)

电子存折或电子钱包旧余额 4

电子存折或电子钱包联机交易序号 2 密钥版本号 1 算法标识 1 伪随机数ICC 4 MAC1 4

用圈存对应答内容(4字节伪随机数ICC+2字节电子存折或电子钱包联机交易序号+80 00)进行3DES加密生成过程密钥;

圈存[Credit For Load]APDU命令:80(CLA)52(INS)00(P1)00(P2)0B(LC) YY YY MM DD (交易日期)HH MM SS (交易时间)XX XX XX XX(MAC2) MAC2的计算:

初始值:00 00 00 00 00 00 00 00 密钥:上面生成的过程密钥

生成MAC2的数据:00 00 10 00(4字节交易金额)02(交易类型标识)00 00 00 00 00 01(6字节终端机编号)YY YY MM DD (交易日期)HH MM SS (交易时间)

如果圈存交易成功,电子钱包文件的联机交易序号加1,交易金额加在电子钱包的余额上,并且在交易明细文件中增加一条记录。

B、消费过程:

在消费之前先校验PIN: 校验PIN[Verify] APDU命令:00(CLA) 20(INS) 00(P1) 00(P2) 02(长度) 12 34(PIN)

初始化消费[Initialize For Purchase] APDU命令:80(CLA) 50(INS) 01(P1) 02(P2) 0B(长度) 01(消费密钥标识符)00 00 00 01(消费金额)00 00 00 00 00 01(终端机编号)

如果初始化消费成功,则应答数据域内容: 说明 长度(字节)

电子存折或电子钱包旧余额 4

电子存折或电子钱包联机交易序号 2 透支限额 3 密钥版本号 1 算法标识 1 伪随机数ICC 4

消费[Debit For Purchase]APDU命令:80(CLA)54(INS)01(P1)00(P2)0F(LC)

YY YY YY YY (终端交易序号)YY YY MM DD(终端交易日期)HH MM SS (交易时间)XX XX XX XX(MAC1)

用消费/取现密钥对(4字节伪随机数ICC+2字节电子存折或电子钱包联机交易序号+终端交易序号的最后2个字节))进行3DES加密生成过程密钥; MAC1的计算:

初始值:00 00 00 00 00 00 00 00 00(8个字节) 密钥:过程密钥

生成MAC码的数据:4字节交易金额+1字节交易类型标识+6字节终端机编号+4字节终端交易日期+3字节终端交易时间

如果消费交易成功,电子钱包文件的联机交易序号加1,电子钱包减去交易金额,并且在交易明细文件中增加一条记录。

六、其它指令解析

以下指令在使用过程中有较多的疑问,解释如下: 1、密钥的密文安装过程:

在3.2版本中对密钥的密文安装会有所不同,它的过程如下: 1)建立密钥文件:

建立密钥文件时,有关的文件信息如下表: Lc 有关文件信息

07 文件标识符 (2字节) 文件类型 (1字节) 权限1 (1字节) 权限2(1字节) Len1(1字节) Len2 (1字节)

权限1指明增加新密钥的权限,权限2指明用何种方式安装密钥。权限2设为80h,表示以密文方式安装。

2)使用上一层的应用主控密钥(SmartCOS 3.2中规定:密钥标识为01的外部认证密钥为应用主控密钥)对密钥信息进行加密(密钥信息为:明文密钥信息长度+密钥信息+80 00 00 00 00 00 00),对密钥信息的加密方式按标准的Triple DES或Single DES,如果密钥为16字节,则用Triple DES加密,如果为8字节,则用Single DES加密。

3)生成MAC码,初始值为:4个字节的随机数+00 00 00 00,生成MAC码的数据为:5个命令头+加密后的密钥信息。

4)其它密钥的密文安装都使用应用主控密钥加密安装。

5)密文安装MF下的应用主控密钥时,则使用卡片的传输密钥进行安装。 2、采用安全报文写二进制文件

1) 在建立二进制文件时,文件类型的第4位为1表示采用安全报文。 2)LC为写入的字节数+4

3)安全报文(MAC)的计算:

初始值为:4个字节的随机数+‘00 00 00 00’ 密钥为:应用维护密钥 代码 值 CLA 04 INS D6 P1 Xx P2 Xx

Lc 写入数据长度+4

DATA 写入数据+4字节MAC

8、PIN Unblock个人密码的解锁 命令报文编码如下: 代码 值 CLA 84 INS 24 P1 00

P2 01-解锁个人密码 Lc 0C

DATA 加密的个人密码数据元+报文鉴别代码(MAC)数据元,使用PIN解锁密钥。 其中:

加密的个人密码数据元:

PIN解锁密钥对 PIN明文长度+PIN+80 00(补足8的倍数)进行加密生成

MAC的生成:

初始值:4字节随机数+00 00 00 00 密码:PIN解锁密钥

生成MAC码的数据:CLA+INS+P1+P2+LC+加密的PIN(8字节)

六、CPUDEMO的使用

七、RD读写器函数库的使用说明

(1) int cpu_reset(int icdev,unsigned char *data_buffer); 说明: CPU卡复位操作

参数: icdev: 初始化返回的设备标识符 data_buffer:复位响应返回的字符串 返回: = 0 正确

< 0 错误(见错误代码)

(2) int cpu_protocol(int icdev,int len, unsigned char *send_cmd, unsigned char *receive_data)

说明: 按照CPU卡T=1的传输协议向读写器发送命令串 参数: icdev: 初始化返回的设备标识符 send_cmd: 对卡操作的命令串(T=1格式) len: 命令串的长度

receive_data: CPU卡返回的数据串 返回: = 0 正确

< 0 错误(见错误代码)

(3) int cpu_comres(int icdev,int len, unsigned char *send_cmd, unsigned char *receive_data)

注意事项:

1)不管是T=0或T=1的卡,RD读写器都是按T=1格式来传输命令的。 发送的命令串send_cmd包括:

NAD+PCB+LEN+COMMAND+BCC 对于T=0的卡,NAD、PCB可填‘00’;

返回值receive_data结构与Send_cmd相同。

2)cpu_comres与cpu_protocol()的不同

a. 当上层函数库收到状态字节SW1SW=61XX时,Cpu_protocol()函数做进一步处理,向读写器下发取应答字节指令(Get Respond),并将数据和状态字节一并返回;而cpu_comres()函数不做任何处理,直接将状态字节SW1SW2返回。

b. 当上层函数库接收到状态字节SW1SW=6CXX时,Cpu_protocol()函数做进一步处理,将XX赋予le后重新发送上次指令,并将数据和状态字节一并返回;而cpu_comres()函数不做任何处理,直接将状态字节SW1SW2返回

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容) 安装应用维护密钥DAMK[Write Key] APDU命令:80 (CLA)E8(INS) 00(P1) 00(P2) 18(密钥信息长度) 01(密钥标识符) 01(密钥版本号) 00(算法标识) 05(密钥类型) 0F(使用权限) 00(后续状态) FF(修改权限) 00 (错误计数器)XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX(密钥内容) 建立公共应用基本文件[Create File] APDU命令:80(CLA) E0(INS) 02(P1) 00(P2) 07(Lc信息长度) 00 15 (文件标识符)00 (二进制文件类型)0F(读权限)FF(更

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com