电子钱包交易过程中利用PSAM卡计算 TAC--交易验证码
来源:互联网 发布:java runnable 编辑:程序博客网 时间:2024/04/30 15:43
目的:自己计算TAC并且和CPU卡消费成功后产生的TAC值相同
原因:电子钱包交易过程中可能会出现闪卡现象(用户卡中的金额已经扣除,但是终端没有收到卡片返回的TAC和MAC2),所以再次靠卡时,终端会判断是否是闪卡,如果是则终端根据之前的交易数据,自行计算TAC,然后上送后台系统。
初始向量: 00 00 00 00 00 00 00 00
待处理数据:4字节交易金额 +1字节交易类型标识+6字节终端机编号+4字节终端交易序号+4字节终端交易日期+3字节终端交易时间
密钥:TAC密钥左8字节与右8字节异或得到的8字节数据
算法:DES_MAC 算法
说明:
以上过程全部CPU卡,PSAM内部COS自动完成。
以下计算TAC的流程适用于:
1.如果PSAM卡中TAC秘钥类型是口令重装密钥类型,则此PSAM卡中的TAC密钥对CPU卡中的分散因子分散之后=CPU卡中的TAC密钥,因为 口令重装密钥在被使用时COS会自动左右8字节进行异或。
2.如果PSAM卡中的TAC密钥类型是加密MAC密钥,或者是MAC密钥类型,则此PSAM卡TAC密钥对CPU卡中的分散因子分散之后=CPU卡中的TAC密钥左右8字节异或的值
例程计算:
先用CPU卡消费计算一个TAC,并且保存计算TAC需要的数据,
然后用相关数据自己计算TAC,比较和CPU卡产生的TAC是否相同,计算过程中使用PSAM卡的DES初始化命令进行分散密钥,DES命令计算TAC。
CPU卡机构代码: 07 92 80 00 00 00 01 45
用户卡序列号: 20 16 12 21 00 00 10 03
日期时间: 0170214154000
终端交易序号 : 00000005
交易金额: 00000001
终端机编号: 36 04 86 60 00 02
交易类型标识: 09
a5 71 7b 4f 99 09 f5 38
使用PSAM卡计算TAC:
1.发送DES初始化命令分散TAC密钥:
80 1A 44 00 10 20 16 12 21 00 00 10 03 07 92 80 00 00 00 01 45
长度
值
描述
代码
(byte)
(Hex)
CLA
1
80
INS
1
1A
P1
1
44
密钥用途,TAC密钥
P2
1
00
密钥版本,TAC密钥标识
Lc
1
10
分散因子的长度16字节
DATA
XX
20 16 12 21 00 00 10 03
07 92 80 00 00 00 01 45
分散因子:
卡序列号
机构代码
Le
—
不存在
<=90 00
2.发送DES命令计算TAC
待处理数据:
00000001 09 36 04 86 60 00 02 00000005 20170214154000
4字节交易金额 +1字节交易类型标识+6字节终端机编号+4字节终端交易序号+4字节终端交易日期+3字节终端交易时间
因为数据不是8的倍数,所以要分块补足:
00000001 09 36 04 86 60 00 02 00000005 20170214154000 80 00
(补80 00凑够16字节)
DES命令:
80 FA 05 00 20 00 00 00 00 00 00 00 00 00000001 09 36 04 86 60 00 02 00000005 20170214154000 80 00
长度
值
描述
代码
(byte)
(Hex)
CLA
1
80
INS
1
FA
P1
1
05
采用MAC计算方式,有初始值,无后续块
P2
1
00
DES标识号
Lc
1
20
要计算的数据长度
DATA
XX
00 00 00 00 00 00 00 00
00000001 09 36 04 86
60 00 02 00000005
20170214154000 80 00
16字节的计算+
TAC所需数据8字节初始值
Le
—
不存在
采用MAC计算方式,有初始值,无后续块
<=a5 71 7b 4f 90 00
CPU卡返回的TAC:a5 71 7b 4f
结论:利用PSAM卡自己计算TAC是可行的,方法如上
- 电子钱包交易过程中利用PSAM卡计算 TAC--交易验证码
- 基于PBOC的电子钱包消费交易过程
- 基于PBOC的电子钱包消费交易过程
- 电子钱包CPU卡和PSAM卡消费密钥装载分析
- 关于PBOC电子钱包的复合交易
- 关于PBOC电子钱包的复合交易
- PBOC2.0电子钱包扩展应用之复合交易
- Mifare 卡之电子钱包
- M1卡做电子钱包结构
- 电子钱包&电子存折,区别
- IC卡的交易过程
- “电子钱包”正在发育
- 关闭kde电子钱包
- 电子钱包 电子存折 电子现金 概念
- 电子钱包 电子存折 电子现金 概念
- 中国金融集成电路(IC)卡电子钱包存折卡片规范
- CPU卡电子钱包圈存消费调试记录
- PSAM卡指令
- UNICODE与ANSI的区别【转】
- 4.1.4--cup
- 腾讯研发类笔试面试试题(C++方向)
- PAT乙级真题及训练集(9)--1010. 一元多项式求导
- 排序算法比较
- 电子钱包交易过程中利用PSAM卡计算 TAC--交易验证码
- 排序——快速排序
- 10个值得收藏的实用HTML5代码片段分享
- Cassandra集群名称问题
- ORB特征点检测与匹配
- C#获取相对路径的八种方法
- KMP算法学习笔记
- PAT甲级真题及训练集(1)--1046. Shortest Distance (20)
- python 报错'gbk' codec can't encode character '\ue5d1' in position 0: