目的:自己计算TAC并且和CPU卡消费成功后产生的TAC值相同

原因:电子钱包交易过程中可能会出现闪卡现象(用户卡中的金额已经扣除,但是终端没有收到卡片返回的TAC和MAC2),所以再次靠卡时,终端会判断是否是闪卡,如果是则终端根据之前的交易数据,自行计算TAC,然后上送后台系统。

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卡消费过过程中的相关数据:
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

CPU卡消费成功返回的TAC+MAC2
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--交易验证码相关推荐

  1. iphone交通卡忘记删除_如何从iPhone上的电子钱包应用中删除卡和通行证

    iphone交通卡忘记删除 You go to open the Wallet app on your iPhone so that you can delete a card or pass you ...

  2. 抓取html表单验证码,如何在jquery中利用表单获取短信验证码

    如何在jquery中利用表单获取短信验证码 发布时间:2021-02-18 15:42:54 来源:亿速云 阅读:88 作者:Leah 这期内容当中小编将会给大家带来有关如何在jquery中利用表单获 ...

  3. 如何将计算思维融合到C语言程序设计中,利用案例融合计算思维与C语言教学

    摘 要: C语言程序设计的教学目标是使学生利用C语言结合算法解决简单的实际问题.要实现该目标不仅要熟练掌握C语言本身的基本语法和结构,还要具备设计合理算法的思维能力.然而,当前各高校课程教学往往忽略思 ...

  4. c++中利用sizeof运算符计算结构体大小问题探讨

    c++中提供的sizeof运算符可以方便得计算出内置类型的字节数大小,比如sizeof(int),sizeof(char),sizeof(double)的返回值分别为4,1,8,这是很容易理解的.但是 ...

  5. 投机者怎样于2019年3月18日前后的证券市场中利用底部放量实现程序化交易

    小孙我自己很久之前就对证券市场很有热情,从三年前开始,便不断地学习和吸收交易方面的知识,包括最近发现的一个叫QR量化投资社区的不错的平台,也给了自己很多灵感.结合最近的市场情况,心血来潮,在此就分享一 ...

  6. CPU卡PSAM卡 响应指令

    http://m.blog.csdn.net/xinxinsky/article/details/52315592             PIN 二进制文件:数据以字节为单位进行读写,每次读写的长度 ...

  7. M1卡做电子钱包结构

    M1卡做电子钱包使用时,要将某个块按规定格式初始化为数值块 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 数值 数值 数值 Adr Adr Adr Adr 0字节是数值最 ...

  8. MySQL中利用经纬度计算两点之间的距离

    MySQL中利用st_distance 函数计算经纬度距离 方法一: 精确到0.000000米 例: 经度:lon1,lon2 纬度:lat1 , lat2 SELECT st_distance(PO ...

  9. Bank相关7_PBOC电子钱包与电子现金及QPBOC

    电子钱包:EP 电子现金:EC,在PBOC规范中的13部分定义了<基于借贷记应用的小额支付规范中> QPBOC:在PBOC规范的12部分中定义了<费接触式IC卡支付规范> PB ...

最新文章

  1. python 元类工厂模式_Python进阶丨如何创建你的第一个Python元类?
  2. jar2exe 配置jre
  3. Android中Chronometer计时器的简单使用
  4. Webpack 打包太慢?来试试 Bundleless
  5. aix oracle 内存限制,请教 AIX 与 Linux 中,怎样分析Oracle的内存占用?
  6. 第二章:方法区和运行时常量池溢出
  7. mqtt java_MQTT和Java入门
  8. 用webstorm在chrome 调试页面时一直弹出 copy authorization url to clipboard
  9. Foxmail邮件字体大小怎么设置 Foxmail字体的设置方法
  10. mybatis 添加语句返回对象_Mybatis底层源码分析
  11. SpringBoot之前后端分离
  12. linux下查看使用的显示服务器类型
  13. Ansible之playbook的使用总结 - 运维笔记
  14. hex文件、bin文件、axf文件的区别?
  15. 莱昂哈德·欧拉生平及其成就简介
  16. 修改Mac的提醒声音,这样操作才正确! 调节音量提示音怎么更改?
  17. 第三章IP网际协议层
  18. dbeaver连接hive3.1.2,不需添加驱动
  19. win10突然无法显示图片缩略图怎么办
  20. python文件重命名

热门文章

  1. 刘汝佳 语言篇(一)
  2. RabbitMQ概念篇 vhost
  3. linux 设置mysql端口转发_linux使用socat进行端口转发,支持tcp/udp数据转发
  4. 安装Souce Insight 4.0 、显示文件浏览、折叠代码
  5. DataGrid固定表头,实现滑动效果
  6. excel列值实现向下填充
  7. Spring核心——@Configuration与混合使用
  8. 前端开发必备工具-网页调试工具
  9. Win10 iTunes 固件更新位置
  10. qsnctf nisc_easyweb wp