银联Pos终端签到、签退、批结算、批上送、PinKey、MacKey、KEK、主密钥、工作密钥、TPDU、报文头

来源:互联网 发布:手机照片手绘软件 编辑:程序博客网 时间:2024/05/26 19:17

KEK:

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一个代表正常交易状态,一个代表处理要求,

0 0