银联加密算法

很多人对银联卡的加密算法感兴趣,毕竟分分钟涉及的都是你的钱的安全,但网上很少人却讲银联标准加密算法。遂写一遍当做是自己的学习笔记,偶尔忘了可以翻翻,同时希望能够帮助到其他人。

首先要认识一下cbc算法和ecb算法。cbc算法是链式的,慢,不可并行处理,但更安全,因为每一次加密都是依赖于上一次的结果,同时这也会导致一次错将导致后面的全部错误。

ecb算法是分块运算的,可并行,效率高,但不够安全,每一块相同的数据经加密后都是一样的结果。

对比了两种算法之后,你应该能猜到一般都会用相对更安全的做法。

来看两张图:

银联的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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 03:58:37

银联加密算法的相关文章

UnionPay,ChinaPay 最新 银联支付接口C#\Asp.net\MVC 版本

1.概念普及 一.理解什么是UnionPay.ChinaPay 这两个概念如果搞不清楚,绝对够你瞎折腾一段时间的. UnionPay:中国银联,最大的机构:他本身也提供系统接口但都是B2B的,对于单个商户他们不提供客服,也不提供技术解决,更不会提供商户后台(可查消费记录等):但他的技术接口文档比较齐全,而且也可以使用,警惕不要使用这些接口. ChinaPay:银联电子支付公司,第三方的支付公司,UnionPay的所有接口和服务都托管给类似的第三方公司,ChinaPay再向商户服务,ChinaPa

微信支付,支付宝支付,银联支付——三大支付总结

转载:  https://juejin.im/post/596d97576fb9a06bb874a812 银联支付,支付宝支付,微信支付的三大总结,之前也有写过两篇. 微信支付,支付宝支付,银联支付--三大支付总结: http://blog.csdn.net/androidstarjack/article/details/72669394 支付宝植入总结: android 支付宝的植入 <曾经踩过的坑> 微信支付总结: Android 微信支付总结 备注:出于安全考虑,验签我们都是放到后台进行

常见加密算法

常见的加密算法可以分成三类,对称加密算法,公钥加密算法和单向加密算法. 对称加密 指加密和解密使用相同密钥的加密算法.对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性.假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦.对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去

加密算法笔记

加密算法:MD5.SHA,DES,AES,IDEA,RSA.BlowFish 一:单向散列算法 单向散列算法:1.也就是Hash算法,将任意长度的消息队列压缩成某一固定长度的函数, 2.过程不可逆,只是单向过程, 3.包括MD5,SHA,N-Hash, MD5:消息摘要算法,对输入任意长度的消息进行运算,产生一个128位的消息摘要. SHA:安全散列算法,SHA-1,SHA-256,SHA-384,SHA-512 二:对称加密算法 1.加密秘钥和解密秘钥完全相同 2.加密安全性依赖于秘钥的秘密性

ECSHOP 银联电子支付(ChinaPay)插件 掉用JAVA签名

帮客户集成接口时候发现客户网站PHP版本达不到要求 只要调用JAVA来解决问题<?php /** * ECSHOP 银联电子支付(ChinaPay)插件 * ============================================================================ * @author: qq:3037704620 * @email: 3037704620#qq.com * @date: 2017-01-02 */ if (!defined('IN_E

C#封装加密算法(MD5、SHA、HMAC、DES、RSA)的一个类

using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Wen.Helpers { /// <summary> /// 安全助手 /// </summary> public sealed class SecurityHelper { private static readonly byte [] IvBytes = { 0x01, 0x23, 0x

银联错失的良机,“网联”来补上

作者:楠沨 [IT战略家] "网联"也被称为网络版银联,即线上支付统一清算平台,一端连接持有互联网支付牌照的支付机构,另一端对接银行系统.根据方案,平台股东总数不超过 50 家,募股机构在 40 家左右,除了央行和协会,其余股东的股份份额最高不超过 10%,投资金额不超过 5000 万元,防止网联平台被大型支付机构垄断. 设计网联平台,是为了改变现有第三方网络支付服务直连银行网络带来的各种问题:多方关系混乱.监管上有漏洞.安全无法保障等.在网联统一技术标准和业务规则后,第三方网络支付机

Patch OpenSSL使其支持CHACH20_POLY1305加密算法

截止目前的OpenSSL-1.0.2j的版本还不支持Google的CHACHA20加密算法.CHACHA20加密算法相对RC4等相对安全,也针对ARM的手机端进行优化,使其更快更省电. 不过最新的Intel处理器及ARM V8的处理器通过AES-NI指令集对AES-GCM加密算法进行了优化,速度要比chacha20快很多,所以在支持AES-NI指令集的设备上优先使用AES-GCM加密算法,在设备不支持的情况下使用chacha20加密算法. 支持chacha20加密算法的3种方式: 使用Libre

加密技术及常见加密算法

有了互联网的同时给我们的日常生活带来了不少的便利,与此同时也给我们带来了不少的安全隐患,可能你在和别人通信的同时,通信数据就被别人截获了,所以就必须要有一种相应的加密技术,来保护我们的通信隐私.那么今天就大家来简单的了解一下加密技术及一些常见的加密算法. 1.为什么需要加密 1.不加密流量的易受攻击性 2.不加密密码/数据容易被嗅探 3.不加密数据容易被操作 4.不加密无法验证操作 5.不加密相当于邮寄明信片 2.不安全的传统协议 telnet.FTP.POP3等等:不安全密码 http.smt