特点:
1)--必须在金融终端上联机进行;2)--必须提交个人识别码(PIN)
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)
特点:
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)
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