文档2

电子钱包功能设计

根据PBOC中对电子钱包的描述,电子钱包的功能基本上有三个:圈存、消费、查询余额. 

圈存

通过圈存交易,持卡人可将其在银行相应帐户上的资金划入电子钱包中,终端发出初始化圈存命令启动圈存交易

代码

CLA

80

INS

50

P1

00

P2

02

Lc

0B

Data

密钥标识符

08

交易金

00 00 10 00(40.96元)

终端机编

00 11 22 33 44 55

Le

10

(注:交易金额为4个字节的数字,在现阶段,交易金额为16进制,所以,其上表示的为圈存40.96)

IC卡对初始化圈存命令进行处理

1、IC卡根据密钥标识符,在密钥文件中查找该密钥标识符对应的圈存密钥,如果找不到,就返回状态字“9403”,表示不存在相对应的密钥。如果找到的话,就进行以下的处理

2、IC卡生成随机数,利用所查找到的密钥产生过程密钥。过程密钥的生成方式,我将在之后的密钥管理中进行说明。其输入的数据为伪随机数||电子钱包联机交易序号||8000,密钥为所查找到的圈存密钥。||这个符号表示的是字符串连接而不是代码中的或)

3、IC卡利用所生成的过程密钥产生MAC1。其MAC1的生成方式,我也将在之后的密钥管理中进行说明。

其输入的数据为电子钱包余额(交易前)||交易金额||交易类型标识(圈存是02)||终端机编号,密钥为过程密钥

4、在进行这些操作后,IC卡将返回相应的数据

(注:在我的设计中,电子钱包余额以4个字节来进行存储)

说明

EP余额

00 00 00 00

EP联机交易序列号

00 00

密钥版本号DPK

01

算法标识DPK

00

伪随机数(IC卡)

B1 EE 18 0C

MAC1

F2 0B 5E 52

终端将命令响应数据传送给主机,若MAC1验证成功,主机将同意交易进行,并从持卡人在银行的相应帐户中扣减圈存金额。

终端向IC卡发送圈存命令。

代码

CLA

80

INS

52

P1

00

P2

00

Lc

0B

Data

交易日期(主机

20 11 12 21(2011年12月11日)

交易时间(主机

21 48 22 (21点48分22秒)

MAC2

3A 84 5B F0

Le

04

 

IC卡收到圈存命令后,利用过程密钥生成MAC2。其输入数据为交易金额||交易类型标识(圈存的都是02||终端机编号||交易日期(主机)||交易时间(主机)。密钥为过程密钥。与圈存命令传送的MAC2进行比较,如果相同,则MAC2有效

IC卡将电子钱包联机交易序号加1,并且把交易金额加在电子钱包的余额上。

IC卡生成TAC码。TAC码的生成方式和MAC码的生成方式一致。其输入的数据:电子钱包余额(交易后)||电子钱包联机交易序号(加1前)||交易金额||交易类型标识(圈存是02)||终端机编号||交易日期(主机)||交易时间(主机)。密钥为TAC密码最左8个字节与TAC密码最右8个字节异或的结果

IC卡将TAC码返回给终端。至此,IC卡端的圈存交易已经完成了。

说明

长度(字节)

TAC码

 

消费

通过消费交易,持卡人可使用其电子钱包中的余额来进行消费。

终端发出初始化消费命令启动消费交易

代码

CLA

80

INS

50

P1

01

P2

02

Lc

0B

Data

密钥标识符

07

交易金

00 00 10 00(40.96元)

终端机编

00 11 22 33 44 55

Le

0F

(注:交易金额为4个字节的数字,在现阶段,交易金额为16进制,所以,其上表示的为消费40.96)

IC卡对初始化消费命令进行处理

1、IC卡根据密钥标识符,在密钥文件中查找该密钥标识符对应的消费密钥,如果找不到,就返回状态字“9403”,表示不存在相对应的密钥。如果找到的话,就进行以下的处理

2、IC卡生成随机数后,进行以下处理

3、IC卡检查电子钱包余额是否大于或等于交易金额。如果小于交易金额,则回送状态字9401,表示资金不足。

4、在进行这些操作后,IC卡将返回相应的数据

(注:在我的设计中,电子钱包余额以4个字节来进行存储)

说明

EP余额

00 00 10 00

EP脱机交易序列号

00 00

透支限额

00 00 00

密钥版本号DPK

01

算法标识DPK

00

伪随机数(IC卡)

29 88 AE 5A

 

终端将命令响应数据传送给主机,主机生成MAC1

终端向IC卡发送消费命令。

代码

CLA

80

INS

54

P1

01

P2

00

Lc

0F

Data

终端交易序号

01 02 03 04

交易日期(主机

20 11 12 21(2011年12月11日)

交易时间(主机

21 48 22 (21点48分22秒)

MAC1

3A 84 5B F0

Le

08

 

IC卡收到消费命令后,利用所查找到的密钥产生过程密钥。其输入的数据为伪随机数||电子钱包脱机交易序号||终端交易序号的最右两个字节,密钥为所查找到的消费密钥

IC卡利用过程密钥生成MAC1。其输入数据为交易金额||交易类型标识(0x06)||终端机编号||交易日期(主机)||交易时间(主机)。与消费命令传送的MAC1进行比较,如果相同,则MAC1有效

IC卡将电子钱包脱机交易序号加1,并且把电子钱包的余额减去交易金额。

在进行上述处理后,IC卡利用过程密钥生成MAC2。其输入数据为交易金额,密码为过程密钥

IC卡生成TAC码。TAC码的生成方式和MAC码的生成方式一致。其输入的数据:交易金额||交易类型标识||终端机编号||终端交易序号||交易日期(主机)||交易时间(主机)。密钥为TAC密码最左8个字节与TAC密码最右8个字节异或的结果

IC卡将TAC码和MAC2返回给终端。至此,IC卡端的消费交易已经完成了。

说明

长度(字节)

交易验证码TAC

4

MAC2

 

 

电子钱包的命令解析

圈存初始化 INITIALIZE FOR LOAD

命令报文

代码

CLA

80

INS

50

P1

00

P2

02

Lc

0B

Data

密钥索引号

1个字节

交易金额

4个字节

终端机编号

6个字节

Le

10

 

响应报文数据域

说明

长度(字节)

EP余额

4

EP脱机交易序列号

2

密钥版本号(DLK

1

算法标识(DLK

1

伪随机数(IC卡)

4

MAC1

4

 

响应报文状态码

此命令执行成功的状态码是9000

IC卡可能回送的错误状态码如下所示:

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

67 00

长度错误

95 01

圈存超过最大值

94 03

密钥索引不支持

6A 82

文件未找到

 

圈存CREDIT FOR LOAD

命令报文

代码

CLA

80

INS

52

P1

00

P2

00

Lc

0B

Data

交易日期(主机)

4个字节

交易时间(主机)

3个字节

MAC2

4个字节

Le

04

 

响应报文数据域

说明

长度(字节)

交易验证码TAC

4

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

67 00

长度错误

94 03

密钥索引不支持

95 01

圈存超过最大值

6A 82

文件未找到

94 02

MAC验证不成功

 

消费初始化 INITIALIZE FOR PURCHASE

命令报文

代码

CLA

80

INS

50

P1

01

P2

02

Lc

0B

Data

密钥索引号

1个字节

交易金额

4个字节

终端机编号

6个字节

Le

0F

 

响应报文数据域

说明

长度(字节)

EP余额

4

EP脱机交易序列号

2

透支限额

3

密钥版本号DPK

1

算法标识DPK

1

伪随机数(IC卡)

4

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

67 00

长度错误

94 03

密钥索引不支持

95 01

金额不足

6A 82

文件未找到

 

消费 DEBIT FOR CAPP PURCHASE

命令报文

代码

CLA

80

INS

54

P1

01

P2

00

Lc

0F

Data

终端交易序号

4个字节

交易日期(终端)

4个字节

交易时间(终端)

3个字节

MAC1

4个字节

Le

08

 

响应报文数据域

说明

长度(字节)

交易验证码TAC

4

MAC2

4

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

67 00

长度错误

95 01

金额不足

94 03

密钥索引不支持

6A 82

文件未找到

94 02

MAC验证不成功

 

读余额 GET BALANCE

命令报文

代码

CLA

80

INS

5C

P1

00

P2

02

Lc

不存在

Data

不存在

Le

04

 

响应报文数据域

说明

长度(字节)

EP余额

4

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

6A 82

文件未找到

 

计算过程密钥

命令报文

代码

CLA

00

INS

60

P1

00

P2

00

Lc

0x18(24)

Data

密钥

16个字节

输入的数据

8个字节

Le

08

响应报文数据域

说明

长度(字节)

过程密钥

8

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

67 00

长度错误

 

计算MAC

命令报文

代码

CLA

00

INS

62

P1

00

P2

00

Lc

0x09 ~ n

Data

密钥

8个字节

输入的数据

1~n个字节

Le

04

响应报文数据域

说明

长度(字节)

MAC

4

 

响应报文状态码

SW1 SW2

意义

6B 00

参数P1 P2错误

6E 00

CLA错误

 

你可能感兴趣的:(文档2)