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

首先要认识一下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

银联公钥加密java实现_银联加密算法相关推荐

  1. java银联在线支付开发_银联在线支付案例代码

    [实例简介] 银联在线支付的测试案例代码 [实例截图] [核心代码] PayOnLine └── PayOnLine ├── src │   ├── acp_sdk.properties │   └─ ...

  2. 银联小微商户_银联旗下银联小微商户“静态码收款限额调整

    原标题:银联旗下银联小微商户"静态码收款限额调整 据银联旗下银联小微商户服务微信号发布的信息"商户静态码收款限额调整通知"表明,银联方面按照央行的新政要求率先开展了限额工 ...

  3. 银联支付java代码实现_[VIP源码]【S008】Java实现支付宝、微信、银联支付项目实例项目源码 百度云 网盘...

    java源码项目名称:Java实现支付宝.微信.银联支付项目实例项目源码  支付项目源码& X3 U' W# h0 z# K 百度网盘下载链接: ( y! x% n" V9 F9 s ...

  4. java ecc 加密_基于java实现的ECC加密算法示例

    本文实例讲述了基于java实现的ECC加密算法.分享给大家供大家参考,具体如下: ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中, ...

  5. 手机闪付是什么意思_银联联合发布,新的手机闪付:产品已经到来

    金融创新让各类金融产品遍地开花,无论是传统金融范畴还是新金融范畴,拥抱监管外,更应在合规运营的根底上顺应行业开展. 经济复苏叠加消费特征改动的背景,促使银联等金融机构必需加快科技创新的脚步,关于金融创 ...

  6. java的rsa加密算法_用java编程实现RSA加密算法

    RSA加密算法是目前应用最广泛的公钥加密算法,特别适用于通过Internet传送的数据,常用于数字签名和密钥交换.那么我今天就给大家介绍一下如何利用Java编程来实现RSA加密算法. 一.RSA加密算 ...

  7. java aes php_php和java的aes默认加密算法有点区别及解决方法。

    1.php和java的aes默认加密算法有点区别,php能解密java加密的密文,但java不能解密php加密的密文.原因在于: 1.Java中AES加密与解密默认使用AES/ECB/PKCS5Pad ...

  8. rsa加密算法java实例,java实现的RSA加密算法详解

    本文实例讲述了java实现的RSA加密算法.分享给大家供大家参考,具体如下: 一.什么是非对称加密 1.加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2.密钥分为:公钥,私钥 公钥:可 ...

  9. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  10. Java 加密 AES 对称加密算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...

最新文章

  1. Cocos 全局变量的使用
  2. arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用
  3. Redis-07Redis数据结构--有序集合ZSet
  4. cisco tftp 操作
  5. Tensorflow2.6更新cuda11.2
  6. nginx 源码学习笔记(十八)—— ngx_add_inherited_sockets 继承的sockets
  7. wxWidgets:wxTaskBarIcon 演示
  8. gtest 测试部分_全部关于测试–第1部分
  9. 【NOIP2015】D2-T1跳石头,二分答案
  10. Python获取文件后缀名
  11. Java RMI(远程方法调用)入门
  12. [高效Mac] 多显示器快速切换鼠标焦点和移动窗口
  13. python程序设计基础与应用课后答案_智慧职教Python程序设计基础作业课后答案
  14. MySQL索引原理总结
  15. 如何用公式计算计算机的及格率,及格率和优秀率公式 在excel中如何计算及...
  16. 3D打印技术助力传感器:制造出堪比鹰眼视野的摄像头
  17. 模拟点击事件php,利用js脚本模拟鼠标点击事件
  18. 一文读懂iOS如何使用TestFlight进行测试
  19. 微信小程序如何开通支付功能?
  20. sublime text 光标移动行末/行首

热门文章

  1. 常说的监听某个端口,是什么意思?怎么理解?
  2. ShareTechnote系列LTE(10):多小区多RAT之间的交互
  3. A股市股票行情实时数据最简封装API接口的python实现
  4. 网络信息安全:五、GRE和IPSEC
  5. MATLAB与线性代数--简化阶梯矩阵
  6. C语言 将大写字母转换为小写字母
  7. 【11月18日截稿】【高校支持】第三届机器人、智能控制与人工智能国际学术会议-RICAI 2021...
  8. free-mybatis-plugin插件下载
  9. Google广告分类体系
  10. 快速缓解眼睛疲劳的穴位按摩