? "开始钱包的圈存"

// 交易类型
    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圈存脚本相关推荐

  1. 中国银联对圈存脚本及冲正机制的建议

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/43647425 作者:小马 以下内容根据银行卡检测中心培训材料整理而来,备忘. 圈存 ...

  2. 发卡行圈存脚本是如何生成的

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 假设条件: 1 圈存1000元 2 第一货币9F79 3 ...

  3. android朋友圈动态视频,安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是?...

    原标题:安卓版微信7.0.5尝鲜,朋友圈可发30秒视频,网友最爱的功能是? 微信现在已经是成为人们每天最常使用的聊天工具之一,因此微信的每一次更新和变化都会引起人们的注意.这不,安卓版的微信又悄悄推出 ...

  4. iOS 版微信 7.0.4 发布:新增朋友圈「最近一个月」可见;中国5G专利占比34%,华为申请数量最多|嘟头条...

    「嘟爷头条」,是嘟嘟精心打造的一个快速了解业界新闻的的板块,抽取一周最新鲜最重要的业界资讯,让你花几分钟就可以时刻紧跟业界潮流. 快讯速知 iOS 版微信 7.0.4 发布:新增朋友圈「最近一个月」可 ...

  5. android.nfc.tech圈存,微信etc圈存教程:1分钟学会ETC充值圈存

    微信充值etc怎么圈存?微信etc需要圈存后才能够成功充值,那么微信etc怎么圈存呢,下面小编就为大家介绍下微信充值etc圈存方法,感兴趣的朋友们就一起来了解下吧. 软件名称:微信安卓版 V8.0.3 ...

  6. android.nfc.tech圈存,荣耀7使用nfc功能教程及注意事项,亲测可以刷公交卡

    本帖最后由 梦里飞沙 于 2015-9-19 23:27 编辑 首批7777台用户,小7拿到手有一个星期了,每天逛论坛看到的都是各种最基本的问题贴和买不到的吐槽贴,玩机教程少的可怜.看到很多人问关于n ...

  7. VMware SDS 什么是VSAN?? VSAN的体系结构 (含VSAN 6.0、6.1版的新内容)

    VMware SDS 之一:什么是VSAN?? http://www.voidcn.com/article/p-yglfqgng-bt.html VSAN可看成是一种vSphere Storage,是 ...

  8. VMware SDS 之四: VSAN的技术细节 (含VSAN 6.0、6.1版的新内容)

    本篇文章会详细介绍虚拟机存储策略,IO如何流动等技术细节.在介绍存储策略前,我们先来探讨一下支持存储策略必备的技术VASA. 目前占据存储市场主流的磁盘阵列,大多数都是在以vSphere为代表的服务器 ...

  9. 微信 版本android 7.0,安卓微信7.0新版对比旧版详细体验

    [PConline 应用]近几天,坊间一直传闻微信将有大动作,结果--iOS版微信7.0.0上线了.就在安卓版童鞋集体仰慕苹果版的"待遇"时,安卓版微信7.0.0也开启内测了. 简 ...

最新文章

  1. Nginx最新版安装教程(Windows+Linux)
  2. 研究发现,脸谱网和谷歌在流媒体上有广告跟踪器
  3. webpack devServer
  4. Internet概念与TCP/ IP分层模型
  5. 我的游测之路 | 揭秘游戏测试神秘面纱(一)
  6. 百度SEO站群小旋风蜘蛛池站群X8模板
  7. 微信小程序通用功能设计和实现
  8. golang odbc mysql_go语言通过odbc操作Access数据库的方法
  9. 方维出现 Fatal error: Class 'Session' not found
  10. 单独编译一个内核模块的方法
  11. 常用matlab画图命令 坐标轴倾斜
  12. 网页编程语言,网页编程语言大全介绍。
  13. 湖南工程学院CSDN高校俱乐部简介
  14. redis之可视化工具
  15. 当“思岚”激光雷达邂逅盲人拐杖
  16. 字符串转换成十进制整数
  17. 如何制作渐变色二维码
  18. MySQL 数据库基础(1)
  19. 500GB 的数据库怎么发送给客户?大文件传输软件来帮忙
  20. 4.Python3标准库--算法

热门文章

  1. Front End Bound AND Back End Bound
  2. ImageUploader的使用
  3. 文档错别字处理方案——WPS拼写检查与文档校对
  4. pywifi 控制wifi
  5. Unity的地形Splat图片
  6. 全球及中国吊顶行业研究及十四五规划分析报告
  7. 【鲁班学院】设计模式—访问者(Visitor)模式
  8. QQ邮箱中的WebQQ
  9. 计算机毕业设计Node.js+Vue党员学习管理系统(程序+源码+LW+部署)
  10. 渗透测试 ---- 信息收集