0.1.2.8版ep圈存脚本
? "开始钱包的圈存"
// 交易类型
ED圈存 = 01
EP圈存 = 02
交易类型= $EP圈存
//圈存密钥
圈存密钥 = 70 6D 06 71 BB 8B D2 8B D3 D6 E8 83 68 32 FD D4
//消费密钥
消费密钥 = 36 05 EB BC B7 C2 C7 C4 70 E9 BE A6 97 72 3D F8
//TAC密钥
TAC密钥 = 47 9E 71 BE FF 10 7A 76 13 8D 34 F8 4B 20 31 FF
终端机编号 = 112233445566
交易金额 = 00001000
交易时间 = 2011 0401 12 00 00
//初始化圈存
// 交易类型 = EP圈存 密钥索引 交易金额 终端机编号
80 50 00 $交易类型 ( 01 $交易金额 $终端机编号 )
if sw != 9000
message "初始化圈存错误"
pause
endif
set 初始化圈存结果 //将结果暂存,结果内容为 余额(4) 序号(2) 版本号+版本标识( 2 ) 伪随机数( 4 ) mac1( 4 )
//将数据进行分解
余额 = mid( $初始化圈存结果, 0, 4 ) // 余额
交易序号 = mid( $初始化圈存结果, 4, 2 ) // 序号
伪随机数 = mid( $初始化圈存结果, 8, 4 ) // 伪随机数
圈存mac1 = mid( $初始化圈存结果, 12, 4 ) // 圈存mac1
//下面开始校验mac1,先计算过程密钥SESLK,SESLK的原始组成为
// 伪随机数 || 电子存折联机序列号或电子钱包联机序列号 || 8000
圈存过程密钥原始数据 = $伪随机数 $交易序号 8000
? "圈存过程密钥原始数据为 " $圈存过程密钥原始数据
圈存过程密钥 = 3des_encode_ecb( $圈存过程密钥原始数据, $圈存密钥 )
? "圈存过程密钥 " $圈存过程密钥
//mac1的原始数据组成为
// 余额 + 交易金额 + 交易类型标识 + 终端机编号
mac1的原始数据 = $余额 $交易金额 $交易类型 $终端机编号
mac1的临时数据 = fixed80( $mac1的原始数据 )
? "mac1的原始数据 " $mac1的原始数据
? "mac1的临时数据 " $mac1的临时数据
//用过程密钥对mac1原始数据计算mac,其结果就是mac1,icv为全0
外部计算的mac1 = des_des_mac( 0000000000000000, $mac1的临时数据, $圈存过程密钥 )
if $外部计算的mac1 != $圈存mac1
message "mac1 错误"
? "外 " $外部计算的mac1
? "内 " $圈存mac1
pause
else
message "mac1 正确,圈存初始化成功"
endif
//******************************
// 圈存
//******************************
// 圈存数据为 交易时间 + mac2
// mac 原始数据为 交易金额 + 交易类型标识 + 终端机编号 + 交易时间 + 交易时间
圈存指令原始数据 = $交易金额 $交易类型 $终端机编号 $交易时间
圈存指令临时数据 = fixed80( $圈存指令原始数据 )
//用过程密钥对mac2 原始数据进行mac计算,结果是mac2
圈存指令MAC2 = des_des_mac( 0000000000000000, $圈存指令临时数据, $圈存过程密钥 )
//圈存指令为 交易时间 + mac2
80 52 00 00 ( $交易时间 $圈存指令MAC2 )
if sw != 9000
message "圈存失败"
pause
else
message "圈存成功"
endif
set 圈存指令返回TAC
//tac的计算如下
//余额(交易后) + 交易序号(加1前) + 交易金额 + 交易类型标识 + 终端机编号 + 交易时间
余额 = add( $余额, $交易金额 )
// 余额(交易后) + 交易序号(加1前) + 交易金额 + 交易类型标识 + 终端机编号 + 交易时间
TAC原始数据 = $余额 $交易序号 $交易金额 $交易类型 $终端机编号 $交易时间
TAC临时数据 = fixed80( $TAC原始数据 )
DTK前8字节 = mid( $TAC密钥, 0, 8 )
DTK后8字节 = mid( $TAC密钥, 8, 8 )
DTK异或结果 = xor( $DTK前8字节, $DTK后8字节 )
外部计算TAC = des_des_mac( 0000000000000000, $TAC临时数据, $DTK异或结果 )
message "TAC 为 " $外部计算TAC
if $外部计算TAC != $圈存指令返回TAC
message "TAC 比较失败"
pause
else
message "TAC 比较成功,圈存完全成功"
endif
0.1.2.8版ep圈存脚本相关推荐
- 中国银联对圈存脚本及冲正机制的建议
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/43647425 作者:小马 以下内容根据银行卡检测中心培训材料整理而来,备忘. 圈存 ...
- 发卡行圈存脚本是如何生成的
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 假设条件: 1 圈存1000元 2 第一货币9F79 3 ...
- android朋友圈动态视频,安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是?...
原标题:安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是? 微信现在已经是成为人们每天最常使用的聊天工具之一,因此微信的每一次更新和变化都会引起人们的注意.这不,安卓版的微信又悄悄推出 ...
- iOS 版微信 7.0.4 发布:新增朋友圈「最近一个月」可见;中国5G专利占比34%,华为申请数量最多|嘟头条...
「嘟爷头条」,是嘟嘟精心打造的一个快速了解业界新闻的的板块,抽取一周最新鲜最重要的业界资讯,让你花几分钟就可以时刻紧跟业界潮流. 快讯速知 iOS 版微信 7.0.4 发布:新增朋友圈「最近一个月」可 ...
- android.nfc.tech圈存,微信etc圈存教程:1分钟学会ETC充值圈存
微信充值etc怎么圈存?微信etc需要圈存后才能够成功充值,那么微信etc怎么圈存呢,下面小编就为大家介绍下微信充值etc圈存方法,感兴趣的朋友们就一起来了解下吧. 软件名称:微信安卓版 V8.0.3 ...
- android.nfc.tech圈存,荣耀7使用nfc功能教程及注意事项,亲测可以刷公交卡
本帖最后由 梦里飞沙 于 2015-9-19 23:27 编辑 首批7777台用户,小7拿到手有一个星期了,每天逛论坛看到的都是各种最基本的问题贴和买不到的吐槽贴,玩机教程少的可怜.看到很多人问关于n ...
- VMware SDS 什么是VSAN?? VSAN的体系结构 (含VSAN 6.0、6.1版的新内容)
VMware SDS 之一:什么是VSAN?? http://www.voidcn.com/article/p-yglfqgng-bt.html VSAN可看成是一种vSphere Storage,是 ...
- VMware SDS 之四: VSAN的技术细节 (含VSAN 6.0、6.1版的新内容)
本篇文章会详细介绍虚拟机存储策略,IO如何流动等技术细节.在介绍存储策略前,我们先来探讨一下支持存储策略必备的技术VASA. 目前占据存储市场主流的磁盘阵列,大多数都是在以vSphere为代表的服务器 ...
- 微信 版本android 7.0,安卓微信7.0新版对比旧版详细体验
[PConline 应用]近几天,坊间一直传闻微信将有大动作,结果--iOS版微信7.0.0上线了.就在安卓版童鞋集体仰慕苹果版的"待遇"时,安卓版微信7.0.0也开启内测了. 简 ...
最新文章
- Nginx最新版安装教程(Windows+Linux)
- 研究发现,脸谱网和谷歌在流媒体上有广告跟踪器
- webpack devServer
- Internet概念与TCP/ IP分层模型
- 我的游测之路 | 揭秘游戏测试神秘面纱(一)
- 百度SEO站群小旋风蜘蛛池站群X8模板
- 微信小程序通用功能设计和实现
- golang odbc mysql_go语言通过odbc操作Access数据库的方法
- 方维出现 Fatal error: Class 'Session' not found
- 单独编译一个内核模块的方法
- 常用matlab画图命令 坐标轴倾斜
- 网页编程语言,网页编程语言大全介绍。
- 湖南工程学院CSDN高校俱乐部简介
- redis之可视化工具
- 当“思岚”激光雷达邂逅盲人拐杖
- 字符串转换成十进制整数
- 如何制作渐变色二维码
- MySQL 数据库基础(1)
- 500GB 的数据库怎么发送给客户?大文件传输软件来帮忙
- 4.Python3标准库--算法