基于pboc的电子钱包的圈存过程
来源:互联网 发布:暗黑破坏神2mac版1.14 编辑:程序博客网 时间:2024/05/06 09:25
基于pboc的电子钱包的圈存过程,供智能卡行业的开发人员参考
一. 圈存
首先终端和卡片有一个共同的密钥叫做圈存密钥:LoadKey
假设LoadKey = 11223344556677888877665544332211
在满足安全条件的情况下:
第一步:终端向卡片发送圈存初始化命令:
Apdu: 80 50 00 01 0B 01 00001000 001122334455
CLA INS P1 P2 LC KeyIndex 交易金额 终端机编号
卡片返回16个字节的数据如下(不包括9000):
00000000 0000 02 00 11223344 2988AE5A
卡片余额 交易序号 密钥版本号 算法标识 随机数 MAC1
MAC1的计算过程如下:
1.计算过程密钥:SessionKey
InputData = 11223344 0000 8000 (8bytes)
随机数 交易序号 填充数据
LoadKey = 11223344556677888877665544332211
SessionKey = 3DES_Enypt(InputData, LoadKey) = 9B1D924E05595603
用LoadKey对InputData 做3DES加密
2.计算MAC1
InputData1 = 00000000 00001000 01 001122334455
卡片余额 交易金额 交易类型 终端机编号
SessionKey = 9B1D924E05595603
MAC1 = MAC(InputData1 SessionKey ) = 2988AE5A
用SessionKey对InputData1做MAC运算
第二步:终端用同样的方法计算MAC1并验证卡片返回的MAC1是否正确,从而确认卡片是否合法。如果MAC1验证没有通过,终端会终止交易。如果MAC1验证通过,进行第三步。
第三步:终端计算MAC2
InputData2=00001000 01 001122334455 20111221 214822
交易金额 交易类型 终端机编号 交易日期 交易时间
SessionKey = 9B1D924E05595603
MAC2 = MAC(InputData2 SessionKey ) = 3A845BF0
用SessionKey对InputData2做MAC运算
第四步:终端向卡片发送圈存命令:
Apdu: 80 52 00 00 0B 20111221 214822 3A845BF0
CLA INS P1 P2 LC 交易日期 交易时间 MAC2
第五步:卡片收到圈存命令后,用和终端一样的方式计算MAC2,并对终端发来圈存命令中的MAC2进行验证,如果MAC2验证没有通过,卡片会返回SW=9302(MAC错误),如果MAC2验证通过,则卡片余额加上交易金额作为卡片新的余额进行余额更新,交易记数器加1,并计算TAC返回给终端,TAC的计算过程如下:
卡片和终端还有一个共同的密钥TAC密钥:TACKey
假设TACKey = 00112233445566778899AABBCCDDEEFF
TACSessionKey=XOR( Left(8),Right(8)) =8888888888888888
TACKey左右8个字节做异或运算
InputData3=00001000 0000 00001000 01 001122334455 20111221 214822
新余额 交易序号旧 交易金额 交易类型 终端机编号 交易日期 交易时间
TAC = MAC(InputData3, TACSessionKey) = 6314E5F5
TAC作为圈存命令的返回数据返回给终端,圈存交易到此就结束了,TAC作为清算的时候验证交易数据真伪和完整性的重要依据,连同交易记录一同保存在终端。
- 基于pboc的电子钱包的圈存过程
- 基于PBOC的电子钱包的圈存过程
- 基于PBOC的电子钱包消费交易过程
- 基于PBOC的电子钱包消费交易过程
- 关于PBOC电子钱包的复合交易
- 关于PBOC电子钱包的复合交易
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别>
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别>
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别
- PBOC/EMV之电子钱包与电子现金的区别
- 电子钱包的圈存——java card开发第四篇
- PBOC/EMV之圈存模式的变革
- 成长,是一个时辰一个时辰熬出来的
- backgroundimage
- 8.4搜索空间中解不唯一的例子:完美立方
- struts2中实现隔行变色
- ORA-08102: index key not found, obj# 129038, file 78, block 2910787 (2)
- 基于pboc的电子钱包的圈存过程
- Python 模拟登录及表单提交
- 怎么改变 python urllib user-Agent
- 英语口语集锦
- JSON 知识点
- Android 布局属性详解
- autoconf 和 automake 生成 Makefile 文件
- automake/autoconf入门
- 关于结构体指针问题