银联加密算法

标签: 银联 加密算法 | 发表时间:2015-07-21 04:59 | 作者:luomoshusheng
出处:http://blog.csdn.net

很多人对银联卡的加密算法感兴趣,毕竟分分钟涉及的都是你的钱的安全,但网上很少人却讲银联标准加密算法。遂写一遍当做是自己的学习笔记,偶尔忘了可以翻翻,同时希望能够帮助到其他人。
首先要认识一下cbc算法和ecb算法。cbc算法是链式的,慢,不可并行处理,但更安全,因为每一次加密都是依赖于上一次的结果,同时这也会导致一次错将导致后面的全部错误。
ecb算法是分块运算的,可并行,效率高,但不够安全,每一块相同的数据经加密后都是一样的结果。
对比了两种算法之后,你应该能猜到一般都会用相对更安全的做法。
来看两张图:
ecb算法

cbc算法

银联的mac一般都是采用称做ecb加密算法,但是请注意, 银联的ecb算法其实就是cbc算法!是链式的,而且,据我所知的银行都是采用银联标准算法,或者稍微有点变种而已,由此也可以看出银联标准ecb加密算法的重要性。
POS终端采用ECB的加密方式,简述如下:
a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK
(MAB)。
b) M1为8个字节的0,对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”。
示例 :
M1=0000000000000000
MAB = 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

对BLOCK1用MAK加密:
ENC BLOCK1 = eMAK(TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18)
= EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

然后,进行下一步的运算:
EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18
XOR) MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38
——————————————————————————————————TEMP BLOCK2 = TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28

对BLOCK2用MAK加密:
ENC BLOCK2 = eMAK(TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28)
= EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

再进行下一步的运算:
EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
XOR) MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48
————————————————————————————————————RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38

对BLOCK用MAK加密:
ENC BLOCK = eMAK(TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38)
= EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38

c) 将运算后的结果(ENC BLOCK)转换成16 个HEXDECIMAL:
ENC RESULT = EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38
= EM311 EM312 EM321 EM322 EM331 EM332 EM341 EM342 || EM351 EM352 EM361 EM362 EM371 EM372 EM381 EM382
示例 :
ENC RESULT= %H84, %H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84 转换成16 个HEXDECIMAL:
“8456B1CD5A3F8484”作为MAC值
取前8个字节作为mac:8456B1CD

例子:
3DES_Key=9BED98891580C3B245FE9EC58BFA8D2A
IV=0000000000000000 // 初始向量,其作用是先与Input的前8字节做异或运算,得到的结果才被用于DES加密
Input=F4F3E7B3566F6622098750B491EA8D5C
ECB加密的结果=FE7B6C8A73167964798EBAC2BA4899AA
CBC加密的结果=FE7B6C8A731679649273F6368EAE9E98

作者:luomoshusheng 发表于2015/7/20 20:59:47 原文链接
阅读:84 评论:0 查看评论

相关 [银联 加密算法] 推荐:

银联加密算法

- - CSDN博客推荐文章
很多人对银联卡的加密算法感兴趣,毕竟分分钟涉及的都是你的钱的安全,但网上很少人却讲银联标准加密算法. 遂写一遍当做是自己的学习笔记,偶尔忘了可以翻翻,同时希望能够帮助到其他人. 首先要认识一下cbc算法和ecb算法. cbc算法是链式的,慢,不可并行处理,但更安全,因为每一次加密都是依赖于上一次的结果,同时这也会导致一次错将导致后面的全部错误.

AES加密算法动画演示

- Charles - 酷壳 - CoolShell.cn
波士顿大学的Howard Straubing做了这么一个动画来展示AES加密算法的演示,挺不错的. 2009年08月10日 -- 几个有趣的漫画. 2010年04月23日 -- McAfee误杀svchost.exe. 2010年05月23日 -- (麻省理工免费课程)C语言内存管理和C++面向对象编程.

AES加密算法强度被削弱

- sec314 - cnBeta.COM
密码学研究者在AES加密算法中发现一处弱点,这使得破解密钥的速度比以前更快了. 发现这个弱点的是三个大学中的研究人员以及微软公司,他们进行了大量的密码学分析,但这个研究结果仍然不能形成什么实际的安全威胁――这反而让人更加放心了.

RC4加密算法的JS实现

- - 博客园_首页
RC4是一种简单的对称加密算法,在文本加密,通信加密等场景应用非常广泛. 在Web中可以用来对本地存储数据进行加密,比如存储cookie中的用户名和密码,敏感信息等. 以下是本人根据其思想基于JS实现的算法. //var  ctext = rc4("我是明文","我是密码");. //var text = rc4(ctext, "我是密码");.

Javascript常见加密算法库

- - 脚本爱好者
CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法. CryptoJS在Google Code上的主页是: http://code.google.com/p/crypto-js/.

简单、高效加密算法TEA

- - 互联网 - ITeye博客
TEA(Tiny Encryption Algorithm)是一种分组加密算法,它的实现非常简单,通常只需要很精短的几行代码. (1)客户端桌面程序或手机程序与服务端接口交互,可以使用TEA来进行加密,保证传输信息的私密性. 如:OICQ的数据安全采用了TEA算法,QQ通讯也大量使用了TEA算法. (2)存储在本地的用户私密信息,可以采用TEA加密算法.

HTTPS背后的加密算法

- - 博客园_知识库
  当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信. InfoQ的这篇 文章对此有非常详细的描述. 这些复杂的步骤的第一步,就是浏览器与服务器之间协商一个在后续通信中使用的密钥算法. 浏览器把自身支持的一系列Cipher Suite(密钥算法套件,后文简称Cipher)[C1,C2,C3, …]发给服务器;.

德国安全专家成功破解GPRS加密算法

- ji - cnBeta.COM
据《德国商报》周三报道,柏林一家安全公司透露说,它们已经破解一些手机的加密算法,这些手机可以使用互联网. 安全研究实验室(Security Research Labs)主管卡斯藤・诺尔(Karsten Nohl)说,破解后可以窃听GPRS. 用户一般会利用GPRS来阅读邮件、浏览网页.

XML加密算法被破解 W3C标准即将重订

- Icelen - cnBeta.COM
在Ruhr学院的研究者发现XML加密协议中存在的严重安全漏洞,并在本次芝加哥举行的ACM展会上予以发表. “一切都变得不安全”是这次漏洞发现所传递的消息. XML加密协议是一种用于服务器与服务器之间传递敏感和不敏 感信息的一种协议. 它的加密算法基于块加密的连缀,不过很显然,它并不是想象中的那么安全.

Java加解密艺术之DES对称加密算法

- - CSDN博客推荐文章
加密的时候使用密钥对数据进行加密,解密的时候使用同样的密钥对数据进行解密 * @see DES是美国国家标准研究所提出的算法. 由于加解密的数据安全性和密钥长度成正比,故DES的56位密钥已经形成安全隐患 * @see 后来针对DES算法进行了改进,有了三重DES算法(也称DESede或Triple-DES).