ANSI 9.8 , ANSI 9.9和ANSI X9.19
ANSI 9.8 :加密PIN(账号)
(1) ANSI X9.8 Format(不带主账号信息 )
位置 长度 说明
1 1byte PIN的长度
2 7byte 6-12位PIN(每个字符占4个BIT,不足8位右补F)
例如:明文PIN为 123456,
则PIN BLOCK为 0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF
(2)ANSI X9.8 Format(带主帐号信息 )
PIN BLOCK 格式:等于 PIN 按位异或主帐号
PIN 格式:
BYTE 1 PIN的长度
BYTE 2 – BYTE 3/4/5/6/7 4--12个PIN(每个PIN占4个BIT)
BYTE 4/5/6/7/8 – BYTE 8 FILLER “F” (每个“F“占4个BIT)
主帐号格式:
BYTE 1 — BYTE 2 0X0000
BYTE 3 — BYTE 8 12个主帐号
12位主帐号的取法:取主帐号的右12位(不包括最右边的校验位),不足12位左补“0X00 ”。
例如:明文 PIN 123456,
设:磁卡上的主帐号为:123456789012345678
截取下的主帐号为:678901234567
则用于PIN加密的主帐号为: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
设:磁卡上的主帐号为:1234567890123456
截取下的主帐号为:456789012345
则用于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
PIN 加密解密
省中心(外围系统)在发送消息给全国中心(省中心)之前,应用本中心的PIK对PIN加密后发往全国中心(省中心)。
ANSI 9.9 :用来保护数据报文,也叫MAC算法
POS终端采用ECB的加密方式,简述如下: a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。 b) 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”。 示例 : MAB = M1 M2 M3 M4 其中:
M1 = MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18 M2 = MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28 M3 = MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38 M4 = MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48
按如下规则进行异或运算: MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18 XOR) MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28 --------------------------------------------------- TEMP BLOCK1 = TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18
然后,进行下一步的运算: TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18 XOR) MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38 --------------------------------------------------- TEMP BLOCK2 = TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28
再进行下一步的运算: TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28 XOR) MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48 --------------------------------------------------- RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38 c) 将异或运算后的最后8个字节(RESULT BLOCK)转换成16 个HEXDECIMAL: RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38 = TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 || TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382
d) 取前8 个字节用MAK加密: ENC BLOCK1 = eMAK(TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342) = EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18
Q/CUP 009.1—2018
216
e) 将加密后的结果与后8 个字节异或: EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18 XOR) TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382 ------------------------------------------------------------ TEMP BLOCK= TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18
f) 用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算。 ENC BLOCK2 = eMAK(TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18) = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
g) 将运算后的结果(ENC BLOCK2)转换成16 个HEXDECIMAL: ENC BLOCK2 = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28 = EM211 EM212 EM221 EM222 EM231 EM232 EM241 EM242 || EM251 EM252 EM261 EM262 EM271 EM272 EM281 EM282 示例 : ENC RESULT= %H84, %H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84 转换成16 个HEXDECIMAL: “8456B1CD5A3F8484” h) 取前8个字节作为MAC值。 取”8456B1CD”为MAC值。
ANSI X9.19
(1) ANSI X9.19MAC算法只使用双倍长密钥,也就是16字节密钥;
(2) MAC数据按8字节分组,表示为D0~Dn,如果Dn不足8字节时,尾部以字节00补齐;
(3) 用MAC密钥左半部加密D0,加密结果与D1异或作为下一次的输入。
(4) 将上一步的加密结果与下一分组异或,然后用MAC密钥左半部加密。
(5) 直至所有分组结束。
(6) 用MAC密钥右半部解密(5)的结果。
(7) 用MAC密钥左半部加密(6)的结果。
(8) 取(7)的结果的左半部作为MAC。
该算法也是中国银联终端所使用的MAC算法,在实际中,可能有加密机不支持该算法,需要通过ANSI X9.9算法多次调用加密机
ANSI 9.8 , ANSI 9.9和ANSI X9.19相关推荐
- ANSI Common Lisp 中文翻譯版 — ANSI Common Lisp 中文版
ANSI Common Lisp 中文翻譯版 - ANSI Common Lisp 中文版 ANSI Common Lisp 中文翻譯版¶
- ANSI编码是什么编码方式?ANSI编码和GBK什么关系
用notepad可以将ANSI 转换成utf8 如果你的文本之前是UTF8可以转换成ANSI(GBK),如果你的文本之前是ANSI,可以转换成UTF8
- ANSI X9.19 MAC算法介绍
(1) ANSI X9.19MAC算法只使用双倍长密钥,也就是16字节密钥: (2) MAC数据按8字节分组,表示为D0-Dn,如果Dn不足8字 ...
- mysql ansi sql标准_Mysql数据库隔离级别(ANSI SQL92规范,行锁,间隙锁)
一. 什么是数据库隔离级别? ANSI(美国国家标准学会:AMERICAN NATIONAL STANDARDS INSTITUTE)在多个事务并发的时候能够正确的处理数据所定义的规范.事务隔离级别越 ...
- android ansi编码格式,如何将UTF字符串转换为ANSI并使用JAVA-ANDROID在SSD中创建ANSI文本文件...
我在java中编写了一个Android应用程序以获取用户答案并将其保存在文件中. 问题是该文件保存在utf-8中. 最终用户将在IBM SPSS中打开这些文件,这是一个只能用ANSI(windows- ...
- Windows环境下Unicode编程总结和将ANSI转换到Unicode 将Unicode转换到ANSI
Windows环境下Unicode编程总结 UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下. UN ...
- ANSI编码和标准代码页(code page)
电脑最先是美国人发明出来开始使用的,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母.数字和常用特殊符号已经绰绰有余了(其实ASCII只用了前127个编码)于是他们使用ASCII编码, ...
- 字符编码 ansi unicode utf-8 区别
简介 为使计算机支持更多语言,通常使用 0x80~0xFFFF 范围的 2 个 字节来表示 1 个字符.比如:汉字 '中' 在 ANSI编码 中文操作系统中,使用 [0xD6,0xD0] 这两个字节存 ...
- 关于编码ansi、GB2312、unicode与utf-8的区别
关于编码ansi.GB2312.unicode与utf-8的区别 2014-01-25 08:51 529人阅读 评论(0) 收藏 举报 本文章已收录于: 关于编码ansi.GB2312.uni ...
最新文章
- 问题解决:jmeter+java+beanshell : org.apache.jorphan.util.JMeterException: Error invoking bsh method: eva
- C# 读取Excel中的时间
- Java泛型三:通配符详解extends super
- MySQL设置从库只读模式
- 设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能
- Kafka配置文件及解释
- vue监听用户在页面的浏览时间需在beforeDestroy()里面进行销毁
- ORACLE中seq$表更新频繁的分析
- MOTO 360连接手机新手图文教程
- Android NFC 标签 读写
- IDEA设置为Eclipse常用快捷键keymap
- 学习Java应该关注哪些网站?
- php黄金搭档_动画电影电子游戏的搭档实际上很棒
- python 老照片修复软件_这款开源的 Python 老照片修复工具火了
- 腾讯云注册与实名图文教程
- 北理计算机学硕保研,2019计算机保研夏令营经验-上科大、北理、北航、中科院计算所夏令营...
- 18.Adaptive AUTOSAR 架构-核心类型CORE
- 用友云新愿望:一起生态一起赚钱 服务销售过亿元
- java车次信息_车次查询示例代码
- 持续更新,最新jhost邀请码--免费jsp空间2016年1月份到2016年2月份(2016.1 - 2016.2)
热门文章
- 默克高性能材料业务正式更名为“电子科技(Electronics)”
- [RK3288][Android5.1] 移植笔记 --- gsl3673 触控驱动
- 高通平台android开发总结 MSM平台上的AMSS
- 记录修复Ubuntu20.04开机后桌面卡住只有鼠标能动
- 今天一个客户公司里要让一台电脑通网
- IIS上无法启动C#编写的WebService服务
- 苹果ipad有哪几款_2020年最新iPad选购指南
- STEP7编程调试(METH-MPI/DP-S2)
- Java获取当前时间前24小时时间
- javascript鼠标拖尾特效