1. 圈存交易

通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中。

特点:

1)--必须在金融终端上联机进行;

2)--必须提交个人识别码(PIN)

步骤:

1) --终端: 启动账户划入交易(INITIALIZE FOR LOAD) 

2) --IC卡: 处理INITIALIZE FOR LOAD命令,检查是否支持命令中提供的密钥(DLK)索引号(NO:9403),产生过程密钥(SESPK),产生MAC1

3) --终端: 验证MAC1,主机将生成SESLK并确认MAC1是否有效。

4) --回送错误状态:如果不接受圈存交易,则主机应通知终端

5) --交易处理: 扣减圈存金额,产生一个报文鉴别码(MAC2)

6) --发出“CREDIT FOR LOAD”命令:更新卡上电子存折或电子钱包余额 

7) --IC卡: 验证MAC2(NO:9302).

8) --交易处理: 电子存折联机交易序号或电子钱包联机交易序号加1,交易金额累加到余额上,更新交易明细

9) --返回确认: IC卡将TAC回送给终端,主机可以 不马上验证TAC

PIN=888888
JE=00100000
DLK=00000000000000000000000000000066
DTK=00000000000000000000000000000077
CPURESET()
00A40000023F00
00A40000021001 0020000003+PIN //校验密码
805C000204(圈存前金额+9000) //圈存初始化: 密钥索引号(1字节)+ 交易金额(4字节)+ 终端机编号(6字节)
805000020B+01+JE+000000000001+10(XYSJ+9000)//P2:01->ED,02->EP JYE=COPY(XYSJ,1,8) //ED或EP余额 4字节
JYXH=COPY(XYSJ,9,4) //ED或EP联机交易序号 2字节
//密钥版本号 1字节
//算法标识 1字节
WSJS=COPY(XYSJ,17,8) //伪随机数 4字节
MAC1=LAST(XYSJ,8) //MAC1 4字节 ECB_3DES_EN(WSJS+JYXH+8000,DLK,SESLK)//过程密钥
//验证MAC1: 旧余额(4字节)+交易金额(4字节) +交易类型(1字节)+终端机编号(6字节)
3DES_MAC(0000000000000000+JYE+JE+02+000000000001+80,SESLK,_MAC1)//终端:验证MAC1
3DES_MAC(0000000000000000+JE+02+000000000001+20100625+153030+800000000000,SESLK,MAC2)//终端:产生MAC2 //金融圈存交易:CREDIT FOR LOAD
805200000B+20100625+153030+MAC2+04(TAC+9000)//IC卡:验证MAC2 //终端TAC: 新余额(4字节)+联机交易序号(2字节)+交易金额(4字节)+交易类型(1字节)+终端机编号(6字节)+交易日期(4字节)+交易时间(3字节)
3DES_MAC(0000000000000000+JYE+JYXH+JE+02+000000000001+20100625+153030,DTK,_TAC) 805C000204(圈存后金额+9000)

2. 圈提交易

通过圈提交易,持卡人可以把电子存折中的部分或全部资金划回到其在银行的相应账户上。

特点:

1)--必须在金融终端上联机进行;

2) --必须提交个人识别码(PIN)

3) --只支持电子存折应用





步骤:

1) --终端:启动圈提交易(INITIALIZE FOR UNLOAD)  

2) --IC卡:处理INITIALIZE FOR LOAD命令

检查是否支持提供的密钥索引号(NO:9403)

检查圈提金额是否超过电子存折余额

产生一个伪随机数(ICC),过程密钥SESULK和一个报文签别码(MAC1)

3) --主机:产生SESULK并验证MAC1是否有效 

4) --主机:产生一个报文签别码(MAC2),以供IC卡对主机合法性进行检查

5) --终端:向IC卡发出圈提(DEBIT FOR UNLOAD)命令

6) --IC卡:验证MAC2(NO:9302)

7) --IC卡:交易处理,并产生一个报文鉴别码(MAC3)

8) --主机:验证 MAC3

CPURESET()
00A40000023F00
00A40000021001 0020000003+888888 //校验密码
805C000204(圈提前金额+9000) JE=00001000
//INITIALIZE FOR UNLOAD 密钥索引号+交易金额+终端机编号
805005010B+01+JE+000000000001+10(QTJY+9000) JYE=COPY(QTJY,1,8) //ED余额 4字节
JYXH=COPY(QTJY,9,4) //ED联机交易序号 2字节
//密钥版本号 1字节
//算法标识 1字节
WSJS=COPY(QTJY,17,8) //伪随机数 4字节
MAC1=LAST(QTJY,8) //MAC1 4字节 DULK=0971C9FD4D726CC5CEC80C67C69274E3
//SESULK:伪随机数(ICC)||电子存折联机交易序号||‘8000’
ECB_3DES_EN(WSJS+JYXH+8000,DULK,SESLK)
//验证MAC1: 旧余额(4字节)+交易金额(4字节) +交易类型(1字节)+终端机编号(6字节)
3DES_MAC(0000000000000000+JYE+JE+03+000000000001+80,SESLK,_MAC1)//主机:验证MAC1
3DES_MAC(0000000000000000+JE+03+000000000001+20100625+153030+800000000000,SESLK,MAC2)//主机:产生MAC2 //金融圈提(DEBIT FOR UNLOAD)
805403000B+20100625+153030+MAC2+04(MAC3+9000)//IC卡:验证MAC2 805C000204(圈提后金额+9000)

3. 取现交易

特点:

1) --必须在金融终端上进行,可以脱机处理

2) --必须提交个人识别码(PIN)

3) --只支持电子存折应用

    

步骤:

1) --终端:启动取现交易(INITIALIZE FOR CASH WITHDRAW)

2) --IC卡:检查是否支持提供的密钥索引号(NO:9403),检查ED余额是否大于或等于交易金额,产生一个伪随机数(ICC)、一个过程密钥SESUK

3) --终端: 终端发出消费/取现命令,

4) --IC卡:验证MAC1。扣减取现交易金额,并将电子存折脱机交易序号加1,产生一个报文鉴别码(MAC2)

5) --终端: 验证MAC2

CPURESET()
JE=00000001//消费金额
DPK=7DAE5E53140A9170C21D5805EADB7E9A 00A40000021001
0020000003+888888 //校验密码 //初始化取现(INITIALIZE FOR CASH WITHDRAW)密钥索引号+交易金额+终端机编号
805002010B+01+JE+000000000001(XYSJ2+9000) YE=COPY(XYSJ2,1,8) //ED余额 4
TJJYXH=COPY(XYSJ2,9,4) //ED脱机交易序号 2
YZXE=COPY(XYSJ2,13,6) //透支限额 3
//密钥版本号(DPK) 1
//算法标识(DPK) 1
WSJS=COPY(XYSJ2,23,8) //伪随机数(IC卡) 4
JYXH=0001 //SESUK:伪随机数(ICC)||电子存折联机交易序号||‘8000’
ECB_3DES_EN(WSJS+JYXH+8000,DPK,SESLK) //交易金额 + 交易类型标识 + 终端机编号 + 交易日期 + 交易时间
3DES_MAC(0000000000000000+JE+000000000001+20090225+153030+80000000000000,SESLK,MAC1)
805401000F+0000+JYXH+20110106+120000+MAC1+08(FHZ+9000) //TAC 4
WSJS=COPY(FHZ,9,8)//MAC2 4 3DES_MAC(0000000000000000+JE+80000000,SESLK,_MAC2

文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38224903

ED/EP系列4《圈存指令》的更多相关文章

  1. ED/EP系列5《消费指令》

    1. 消费交易 消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务. 特点: 1) --可以在销售点终端(POS)上脱机进行 2) --使用电子存折进行的消费交易必须提交个人识别码(PI ...

  2. ED/EP系列3《基本指令》

    Ø --APPLICATIONBLOCK(应用锁定): Ø --APPLICATION UNBLOCK(应用解锁): Ø --CARDBLOCK(卡片锁定): Ø --EXTERNAL AUTHENT ...

  3. ED/EP系列7《指令速查表》

    命 令                                                             CLA                  INS             ...

  4. ED/EP系列1《简介》

    电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用.它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Elec ...

  5. ED/EP系列1《简单介绍》

    电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用. 它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Ele ...

  6. ED/EP系列6《扩展应用》

    包括:电子钱包复合应用:电子钱包灰锁应用. 1. 复合应用模式 Ø INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化): Ø UPDATE CAPP DATA CACHE( ...

  7. ED/EP系列2《文件结构》

    电子存折/电子钱包应用是为持卡人进行金融交易而设计的一种应用.对于一张金融 IC 卡来说,它可以同时支持电子存折和电子钱包两种应用,也可以只支持其中的一种.卡片上两种应用的存在情况可以由应用类型标识( ...

  8. ED/EP简介

    ED:electronic Deposit,电子存折 EP:electronic Purse,电子钱包 PIN:personal identification number,个人识别码 MAC:Mes ...

  9. 基于PBOC电子钱包的圈存过程详解

    基于pboc的电子钱包的圈存过程,供智能卡行业的开发人员参考 一. 圈存 首先终端和卡片有一个共同的密钥叫做圈存密钥:LoadKey   (Load即圈存的意思,unLoad,是圈提的意思) 假设Lo ...

随机推荐

  1. app控件获取之uiautomatorviewer

    初探 在Android的SDk提供了以下的工具来支持我们进行UI自动化测试: uiautomatorviewer:用来扫描和分析Android应用程序的UI控件的工具. uiautomator:一个包 ...

  2. 慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中

    1. 搜索功能和Everything一样快和强大 具有 Everything 搜索快.搜索功能强等优点, 解决了不能方便选择搜索哪个文件夹, 解决了不能同一个画面进行预览等问题 2.文件直接显示到文件 ...

  3. redis学习(3)redis.conf配置文件详解

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =>  1000 bytes # 1kb ...

  4. 'UIShell.OSGi.MvcWebExtension.BundleRuntimeControllerFactory' did not return a controller for the name 'Home'.

    在使用osgi.net 框架的时候,有时会遇到这样的错误: 解决办法: 1. 检查项目文件夹下的 log 日志文件,因 osgi.net 在运行时(包括异常和操作)都会在项目的目录下生成 日志文件,并 ...

  5. Duilib学习笔记《03》— 控件使用

    在前面已经对duilib有个一个基本的了解,并且创建了简单的空白窗体.这仅仅只是一个开始,如何去创建一个绚丽多彩的界面呢?这就需要一些控件元素(按钮.文本框.列表框等等)来完善. 一. Duilib控 ...

  6. VC 宏与预处理使用方法总结

    目录(?) C/C++ 预定义宏^ C/C++ 预定义宏用途:诊断与调试输出^ CRT 和 C 标准库中的宏^ NULL 空指针^ limits.h 整数类型常量^ float.h 浮点类型常量^ m ...

  7. 在CentOS 7上安装Python3.5源码包

    最近开始系统学习Python 3.5,发现CentOS 7系统自带的python版本是Python 2.7.现在要使用Python 3.5该怎么办?方法大体跟安装其他程序一样.以下为详细经过: 1.事 ...

  8. javaSE第六天

    第六天    28 1. 二维数组(理解)    28 (1)就是元素为一维数组的一个数组.    28 (2)格式:    28 (3)案例(掌握):    28 A:二维数组的遍历    28 B ...

  9. Linux ed命令

    $ ed              <- 激活 ed 命令  a                 <- 告诉 ed 我要编辑新文件  My name is Titan. <- 输入第 ...

  10. 结合Git实现Mysql差异备份,可用于生产环境

    埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量.就从平时工作过程中的心得和一些技巧分享出来.今天就猿们最熟悉的Mysql开始宅鸟的开篇博客文章.欢迎猿们拍砖.转载. 注意:宅鸟的 ...