POS终端“密事”之PIN加解密
前言
到现在,我们手上拿到了TPK和TAK工作密钥,今天我们就要来讲讲如何对PIN的加密,以及MAC的运算。
工作密钥
以下是我取得今天的工作密钥,那么运用前一章的知识快速计算出TPK和TAK
(ps TMK为CA5D92598DCA48CE8A4C76361A9269E9)
TPK 9410D034436E8F1613703D5D1ABA25AD
TAK C1A4AE89BAEAB029
对PIN的加密
PinBlock的算法有:
1.ANSI9.8算法(常用默认算法) – 带主账号信息
+ 1.格式化主账号(格式化具体内容见后面算法例子)
+ 2.格式化PIN(格式化具体内容见后面算法例子)
+ 3.格式化后的主账号与格式化后的Pin按位异或
+ 4.用PinKey密钥明文对上述结果加密
+ 5.得到PinBlock
2.ANSI9.8 算法 (常用默认的算法) – 不带主账号信息
+1.格式化PIN(格式化具体内容见后面算法例子)
+2.用PinKey密钥明文对上述结果加密
+3.得到PinBlock
3.ASCII 格式(少用)
PIN不与主账号进行运算直接 ASCII 码加密
4.IBM3624 格式(少用)
PIN不与主账号进行运算直接 BCD 码加密。
此处就介绍以上两种常用算法ANSI X9.8 Format(不带主账号信息)和ANSI X9.8 Format(带主账号信息)
ANSI X9.8 Format(带主账号信息)
- 1.主账号PAN取法(格式化主账号)
- 2.PIN的取法(格式化PIN)
- 3.将格式化后的主帐号和PIN进行按位异或
- 4.用TPK密钥对异或结果 加密
1.主账号PAN取法(格式化主账号)
格式
位置 | 长度 | 说明 |
---|---|---|
1 | 2BYTE | %H0000 |
2 | 6BYTE | 主帐号(12bit) |
- step1 删除主账号最右的1位校验位,取最右边的12位623501 345220000006 9 --- 手输卡号(ps:刷卡方式 得到的二磁道就在'='分隔符左边第二位取,取12位)
- step2 转换16进制表示,每个数字占用4个bit,左侧补0,变成8个字节的数据
PAN 为 0x0000345220000006
2.PIN的取法(格式化PIN)
pos终端手动输入的PIN为 123456 6位
格式
位置 | 长度 | 说明 |
---|---|---|
1 | 1BYTE | PIN长度 |
2 | 7BYTE | 4-12位PIN(每个字符占4个BIT,不足右补F) |
PIN 为 0x06111111FFFFFFFF
3.将格式化后的主帐号和PIN进行按位异或
PIN 06111111FFFFFFFF
PAN 0000345220000006
---xor
06112543DFFFFFF9
4.用TPK密钥对异或结果 加密
TPK密钥 9410D034436E8F1613703D5D1ABA25AD
数据 06112543DFFFFFF9
---3DES双倍长密钥算法
PIN Block FF0C47F016D61C79
与报文PinData中一致
step3:
step4:
ANSI X9.8 Format(不带主账号信息)
- 1.格式化PIN
- 2.用PinKey密钥明文对上述结果加密
- 3.得到PinBlock
规则与ANSI X9.8 Format(带主账号信息)类似,不做讲解了
总结
按照步骤来,这些步骤都很简单,但是往往由于信息不全,很难走完每一步。
信息的不对称,在生活中很多方面。掌握信息要点也很重要。
附:
如何通过密码键盘来计算PinBlock
通过密码键盘来计算PinBlock,通常包含如下几个步骤(不同厂家的产品顺序会不同)
- 1.要求用户输入Pin信息(通常是6位) — 启动Pin运算
- 2.激活工作密钥(加密需要使用的密钥PinKey)
- 3.设置主帐号信息
- 4.设置Pin运算使用的算法
- 5.读取Pinblock信息
整体过程类似,做个拓展
POS终端“密事”之PIN加解密相关推荐
- POS终端“密事”之签到
POS终端"密事"之签到 前言 名词解释 PIN 个人识别码(Personal Identify Number) TMK 终端主密钥 (Terminal Master Key) 数 ...
- xor java_java基于密匙的xor加解密
package iminto.util.common; import java.io.IOException; import java.security.NoSuchAlgorithmExceptio ...
- 银行卡密码键盘 SM4 ECB模式+ANSI X9.8 格式标准(带主账号信息)PIN 加解密示例
文章目录 1.软加解密示例 2.知识点 ①ANSI X9.8 格式标准 ②主密钥,工作密钥加解密 基本概念: 加密种类: 3.密码键盘操作 4.工具 1.软加解密示例 ---------------- ...
- 使用 Python 脚本执行国密 sm2 加解密
一.场景 工作中的一个场景:Go 需要对信息加解密,但是研究了 GmSSL Go API 文档之后,发现是依赖于 CGO 的,同事配了半天环境没配成功.于是换了一个方法,选择 Go 调 Python ...
- IPSEC协议及当中IKE协商加解密原理
散列函数:也叫Hash函数,主要是为保证数据完整性,主流算法有MD5.SHA-1. 散列值:通过散列函数计算得到的结果 对称密钥算法:使用相同的密钥与算法对数据进行加解密 运算 - 优点:速度快.安全 ...
- 使用openssl的EVP接口使用sm2算法加解密等操作
OpenSSL 1.1.1版本提供了对国密SM2算法的支持.但是不知为什么这么设计,将sm2.h sm3.h sm4.h这些头文件放在源码的cryto/include/internall目录下,这样导 ...
- openssl sm2 加解密
1.SM2算法 openssl 1.1.1以后版本提供了对国密SM2算法的支持.源码的cryto/include/internall目录下有sm2,sm3,sm4的设计实现,但是无法直接调用,因此通过 ...
- 移动支付之Pos终端主密钥、工作密钥、pin密钥、mac密钥
下面介绍一下加密机中最主要的几种密钥: 1.加密机主密钥(MK) 加密机主密钥(Master Key - MK)是存入在HSM机内的由三个成分合成的一对最上层密钥.在HSM机器以外的地方不会以明文形式 ...
- Pos终端中的主密钥、工作密钥、pin密钥、mac密钥
下面介绍一下加密机中最主要的几种密钥: 1.加密机主密钥(MK) 加密机主密钥(Master Key - MK)是存入在HSM机内的由三个成分合成的一对最上层密钥.在HSM机器以外的地方不会以明文形式 ...
最新文章
- sybase 数据库恢复
- 组成新数python_大数相加 简单实现 Python 版本
- 元组字典集合内置方法与拷贝
- 【心情】今天买了ZÈRTZ!
- 前端学习(1338):mongoDB删除文档
- 深度学习之RetinaNet
- 基础知识(十四)服务器搭建
- 8.5 传输介质和网络应用
- 一招搞定让标签title属性值换行
- linux和windows时间同步问题(UTClocaltime)
- Html5下载功能实现
- 怎么做好客户关系管理培训PPT课件?
- win10下网易云网络异常问题解决办法
- Elasticsearch7.5配置IK中文分词器+拼音分词
- 名词用作动词举例_名词活用作动词
- ieltsListen was compiled with optimization - stepping may behave oddly; variables may not be availab
- “Project1.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project1.exe”(Win32): 已加载
- android图片裁剪xof,HttpServletResponse response相关头信息,内容信息设置
- 骗你不是人 硬盘传输速度提升4倍的方法
- 图解时间自适应卷积----Time-aware Large Kernel Convolutions
热门文章
- 攻防演练-某地级市HW攻防测试演练红队渗透测试总结
- SCAU华南农业大学-数电实验-模4的可逆计数器-实验报告
- 逻辑运算符 、逻辑中断
- 达人评测i5 1340p和i5 12500h差距 酷睿i51340p和i5 12500h选哪个
- 几种能量及能量平衡方程
- 自己安装黑苹果的心酸路程。
- 我的RUST学习—— 【第十章 10-2】trait:定义共享行为
- Spring源码分析(1) —— 从Xml的加载到解析
- 苹果系统安装mysql找不到bin_Mac 安装MySQL数据库,系统提示mysql: command not found怎么办...
- 万能RabbitTemplate使用模板