DES和MAC加解密算法,已经在多个产品中得到了实际应用,不需任何修改就可使用

本文根据《中国银联直联POS终端规范》的阐述,用C语言编程实现,该算法在实际的商业POS终端中使用。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

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值。

Java代码

数据报文:

0x 1234567890ABCDEFABCDEF1234567890   //$body

MAK:2222222222222222

Mac计算:

M1 = 0x 1234567890ABCDEF

M2 = 0x ABCDEF1234567890

M1 Xor M2 结果: 0x B9F9B96AA4FDB57F

扩展成16字节数据:0x 42394639423936414134464442353746

MAK加密前半部分数据结果:0x 9FDE90A34CF73B2E

加密结果与后半部分数据异或,结果:0x DEEAD6E70EC20C68

MAK加密异或结果:0x E267B6E21913D339

扩展成16字节数据:0x45323637423645323139313344333339

Mac:E267B6E2

8字节扩展成16字节时一定要注意大小写,大小写字母的byte ascii是不同的

mac key是签到报文中获得的,需要用主密钥解密成密钥明文

8583 mac 字符选择 java 实现_转 8583包 mac算法相关推荐

  1. 如何在mac上编写java程序_在mac系统上安装Eclipse,编写java程序

    第一步:安装java jre(java 运行环境). 如图所示: 登陆Oralce官网,点击Download选项,找到如图所示界面: 选择Java Runtime Environment(JRE),打 ...

  2. 选择java版本_新手上路之如何选择Java版本

    导读热词 @ 初入Java坑,有那么多版本的Java,想了解清楚自己到底该下什么版本这个问题,首先得了解清楚LTS与非LTS的区别 LTS与非LTS 每一次去官网下载JDK的时候,当你进入到Java ...

  3. mac 用户 文件夹 权限_这可能是 Mac 共享文件最详细的教程了

    如果希望让一台 Mac 访问另一台 Mac 上的文件,就可以使用 Mac 的文件共享功能. 而且不仅是 Mac 之间,甚至用 iPhone.iPad.Windows PC 都可以访问 Mac 的共享文 ...

  4. mac的rubywoo怎么读_迪奥999和mac ruby woo哪个更好看_有什么区别

    迪奥999和mac ruby woo都是经典的色号,它俩是正红色的口红,适合秋冬季节涂抹,但是质地和价格有差距.那么迪奥999和mac ruby woo哪个更好看?迪奥999和mac ruby woo ...

  5. Mac新手的使用笔记_从Windows到Mac

    文章目录 前言 问题集合 环境搭建 1. Python问题 2. MySql问题 3. 路径问题 3.1 如何打开我的电脑 4. Excel建模问题 5. Visual Sudio Code问题 6. ...

  6. mac 自带 java 环境_在mac上搭建了Java 环境,谨以此文写给自己

    最近跳槽算空挡期吧,还是感觉这两年有点浮躁,总有想把自己归零一下,总结一下重新上路. 以前windows上搞过点java,自从入了iOS的坑,mac上还没搞过,现在借着面试facebook的准备时间, ...

  7. eclipse选择java版本_使用 Eclipse 开发版本选择和下载说明

    现在越来越多的人开发使用 IDEA,使用 Eclipse 开发的已经渐渐变少了,这篇就简单介绍下 Eclipse 的版本选择和下载,供目前还在坚守使用 Eclipse 开发的同胞们~ Eclipse ...

  8. 遗传算法锦标赛选择java实现_多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c...

    tourselect.c  文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...

  9. mac 终端 创建java文件_第一个 终端Java程序 (Mac)

    新建了一个存放Java工程的文件夹:java_text文件夹 在文件夹下 新建一个 文本文件 内容如下: import java.util.*; public class HelloDate { pu ...

  10. mac运行ps特别慢_的Photoshop在Mac上运行速度慢|优化Mac上的Photoshop

    Photoshop在Mac上運行慢 可能有很多原因,你的Photoshop工作缓慢Mac上.可能性是很高,你的Photoshop作品,因为苹果的性能下降缓慢.如果有大量的垃圾文件或者存在于您的Mac电 ...

最新文章

  1. ITK:具有写访问权限遍历图像的某个区域
  2. Python | Pyplot标签
  3. 2016.01.10 论文扩充、精修、查重
  4. MySQL复制应用中继日志解析
  5. Linux硬件硬盘分区知识-总结
  6. Atitit 获取多媒体mp3 mp4 m4a元数据 G:\桌面安装\paidashi\bin\ffprobe.exe ffprobe -i 1.flv -print_format json -sh
  7. linux eclipse memory,Linux下安装JDK和Eclipse
  8. 阿里飞天分布式操作系统
  9. 从两个角度谈谈:什么是产品视角
  10. 分布式学习笔记001
  11. iOS NSDate与NSTimeInterval之间的互转
  12. 探索 SwiftUI 基本手势
  13. BUAA_OO 第二单元多线程电梯问题作业总结
  14. 从成本角度理解盈利和亏损
  15. net start mysql启动mysql时报错:发生系统错误 2。找不到指定文件
  16. SEO学习笔记二:在搜索引擎竞价排名环境下,个人网站将何去何从?
  17. org.apache.flink.client.program.ProgramInvocationException: The main method caused an error
  18. 决策树算法原理(python)
  19. 电子元器件篇---MOS管
  20. ezboot not found 虚拟机安装_如何在 Linux 上安装 Minecraft 服务器

热门文章

  1. Python3---有关日期的处理---最近自然周最近自然月最近一周最近一月---dateutil模块
  2. linux学习资料(转帖收藏)
  3. 《如何有效阅读一本书》:读再多书,不如先学会如何读书
  4. aptio2018设置u盘启动_2018年U盘装系统bios设置U盘启动方法介绍
  5. echarts字符云(词云)
  6. 环洋市场咨询:全球EMS和ODM收入预计2028年达到7978.5亿美元
  7. 抽签抽奖小程序小工具(jquery+html)只需浏览器运行xlsx.core.min.js
  8. SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)
  9. Synergy Mac和Win键盘映射
  10. 0013-图像的阈值化-OTSU、固定阈值法、基于局部的阈值化