银联Pos终端签到、签退、批结算、批上送、PinKey、MacKey、KEK、主密钥、工作密钥、TPDU、报文头
原文:
http://blog.csdn.net/lvxiangan/article/details/41014439
加密密钥:KEK,terminal keys encrypting key;
KEK密钥的用途:KEK实际上是一个密钥,用于加解密主密钥。导进去的主密钥是经过KEK加密后的密文,厂商在SDK再用kek解密主密钥密文。
KEK用3DES算法加密主密钥
KEK, 主密钥,工作密钥
一般做法是,商家提供主密钥密文及KEK给厂商,我们终端出厂烧好;商家在终端绑定时,下工作密钥。
所以密钥机制要规划好,看这个KEK和主密钥,是不是出厂机器就烧好
601601308800001=ED6A7FE6BF5C7569ED1D9D8C89398D85+B4FA01CE
601601308800002=C64DB3FFA392153D1460D3DE2B8A2D7B+89B7BD3F
601601308800003=ED6A7FE6BF5C7569ED1D9D8C89398D85+B4FA01CE
601601308800004=C64DB3FFA392153D1460D3DE2B8A2D7B+89B7BD3F
如:一般大多数APK端,是提供这种主密钥文件给厂商,一个SN号对应一个主密钥,出厂对应烧好
主密钥:用于解密签到获取的工作密钥密文。
工作密钥:包括PinKey(用于密码加密)和MacKey(用于报文加密)
签到:获取pinkey、mackey、批次号
签退:先批结算,然后签退,否则批次号不会更新。
批结算:上送本地pos终端交易流水给服务端,若通过校验则可以进行签退,否则需要批上送交易明细
批上送:批结算校验失败,上送本地交易明细到服务端进行比对。
密码加密原理:使用终端主密钥解密签到得到的pinKey,得到pinKey密码明文,然后用密码明文参与PIN Block加密
计算MAC报文也同理
PIN:个人标识码,Personal Identification Number, 也就是密码。
PAN:个人主账号
PIN BLOCK 格式等于 PIN 按位异或PAN:
18位银行卡号密码加密示例
例如: 明文PIN为: 123456,
假设: 磁卡上的PAN:1234 5678 9012 3456 78
截取下的PAN:6789 0123 4567
用于PIN加密的PAN为:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
PIN BLOCK为: 0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF
异或: 0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
结果为: 0x06 0x12 0x53 0xDF 0xFE 0xDC 0xBA 0x98
16位银行卡号密码加密示例
假设: 磁卡上PAN:1234 5678 9012 3456
截取下的PAN:45678901 2345
则用于PIN加密的主账号为: 0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45
PIN BLOCK为: 0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF
异或: 0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45
结果为:0x06 0x12 0x71 0x31 0x76 0xFE 0xDC 0xBA
银联报文中,除了各个域外,还有以下组成部分:
TPDU + 报文头 + 应用数据 + 位图
TPDU:Transport Protocol Data Unit,传输协议数据单元。是POS报文的一个特定域,由三项共五个字节(10位)的信息组成。用于终端与系统之间的网络协议,用于终端与系统之间的网络协议,用法见下面示例
报文头:6个字节(12位),用法见下面示例
应用数据:2个字节(4位)
位图:bitmap,1域内容,标记哪些域存在(1),哪些域不存在(0),8个字节(16位),这里推荐一个快速计算位图工具:8583 bitmap viewer
如组包代码示例:tradeData.setPkgHeader("6005050000603100311001");
TPDU: 60 05 05 00 00 //磁条卡金融支付类应用为:60
报文头: 60 31 00 31 10 01 // 磁条卡金融支付类应用为:60 软件版本号31:2010年银联POS规范版本(本规范) 最后的00一个代表正常交易状态,一个代表处理要求
银联Pos终端签到、签退、批结算、批上送、PinKey、MacKey、KEK、主密钥、工作密钥、TPDU、报文头相关推荐
- 银联Pos终端签到、签退、批结算、批上送
签到:获取pinkey.mackey.批次号 签退:先批结算,然后签退,否则批次号不会更新. 批结算:上送本地pos终端交易流水给服务端,若通过校验则可以进行签退,否则需要批上送交易明细 批上送:批结 ...
- 实现高德地图签到签退(uniapp)
项目场景: 用uniapp 实现签到签退(使用高德的api) 问题描述 提示:这里描述项目中遇到的问题: 例如:使用uniapp 自带的组件不能实现点击地图 再签退 提示思路: 提示:使用uniapp ...
- OA系统:实现签到签退功能
一.思路 1.创建数据库(注:添加自增主键或者双主键,这里使用了自增主键dtid) 2.创建控制层和业务层,添加signin和signout两种方法 二.功能实现 1.创建数据库 create tab ...
- JavaEE中,考勤(签到签退)功能的实现
体会实现具体功能的思想并加以运用 签到功能 1.数据库中要有相应的表,并创建相应的实体类,复写相关方法 2.在相关的jsp页面添加两个jsp按钮,用于签到与签退,并添加id属性 3.在servlet中 ...
- 每日自动签到签退的程序
公司里有一个网页版的考勤系统.每天打开电脑,用域账户登录,然后打开IE,输入网址,系统会自动感知你的域账户,显示个人信息,在8点半之前点击签到就不算迟到. 像下面的图这样 终于有一天由于地铁故障迟到了 ...
- 【JavaScript】分享一个定时到网站上签到/签退的JS脚本
之前介绍过使用temperMonkey屏蔽CSDN广告的方法,主要就是要针对性地分析网站结构,然后用代码去改变或者操作DOM.今天也一样,我们需要观察网页结构,找到我们要操作的按钮,触发他的click ...
- EF实现考勤管理---(MVC,签到签退)
1.获取登陆用户id 2.后台控制器实现数据库访问和数据传递 3.DAL层实现后台数据库访问和数据传递(上班签到时间.审核状态,下班签退时间.审核状态)判断 4.前台解析后台传递数据,动态解析用户和时 ...
- 签到签退功能的实现-01
实现思路 签到流程是怎样的? 点击签到,往表中插入用户名.签到日期.签到时间.默认自增id,签到一次后不可重复签到,点击签退,更新签退时间,可能未签到,可能已签退,更新时间
- php会议签到签退系统,会议签到管理系统,无障碍会议签到系统,一卡通会议签到系统,会议签到系统 - 新开普(NewCapec)...
会议签到系统 会议签到管理系统是对会议信息的一种统计和详细记录,对参加会议人员进行统一的管理,及时.准确地统计与会人员的迟到.早退.未参加等各种会议状态. 会议签到系统主要是在一卡通系统平台下开发的针 ...
最新文章
- “智源论坛Live”报名 | 清华大学高天宇:实体关系抽取的现状和未来
- zabbix监控系统客户端安装
- Python Requests快速入门
- linux内核earlyprink,内核启动参数机制学习笔记
- django请求与响应(HttpRequest对象和HttpResponse对象)
- boost::hana::length用法的测试程序
- 数字图像基础,分辨率
- 哈哈哈,弟弟被卡桶里了......
- 违反学校防疫规定,这所211高校两研究生被通报批评!
- SHELL下去掉变量中的回车换行
- 《图解算法》学习之算法复杂度、运行时间
- DAC、ADC、FFT使用总结
- Xilinx平台SRIO介绍(五)示例工程Example Design介绍
- XML学习总结(三)——SAXReader解析xml文件数据
- less和css的区别是什么
- 用MATLAB对语音进行基频搬移,语音信号变声处理系.doc
- Worldclim网站CIMP6未来数据下载(校正处理好的数据)
- JDBC基础操作汇总
- 超简单制作多系统启动U盘教程
- python整形是什么,什么是整型?怎样理解Python的整型?
热门文章
- 你的链上资产存储安全吗?交易自由吗?
- 9 个建议,助你度过寒冬
- 【观察】让创新和效率走出“办公室”,联想智慧办公“再进化”
- 【构成L2笔记:双主角 概括浅谈】
- 2021年红包封面小程序源码独立后台无限裂变线上线下引流工具微信流量主小程序
- Java 虚拟机(JVM)原理介绍
- selenium直接刚淘宝登录
- Linux/Deepin 系统简单安装 Photoshop CS6 教程,附安装包
- 华为鸿蒙手机什么时候出售,南财快评:鸿蒙出世,现在明白任正非为什么会说“宁可卖5G,也不会卖终端”了...
- Android VR入门文章