java mac pos_pos终端mac国密(sm4)算法(java实现)

概念理解

mac算法是(Message Authentication Codes 消息认证码算法),是含有密钥散列函数算法。主要通过异或运算,再配合其他加密算法实现mac值的运算,用于校验。

实现过程

将需要加密计算的字符串转换为16进制字符串

例如:

密钥:"12345678901234567890123456789012"

待加密数据(字符串形式):

6000112018111411003020170930101010120171025000755000000005553

转化为16进制:

36303030 31313230 31383131 31343131 30303330 32303137 30393330 31303130 31303132 30313731 30323530 30303735 35303030 30303030 30353535 33

将转换过的16字符串进行补位分组

部位后的数据(部位规则:字符长度%32!=0补位)

36303030 31313230 31383131 31343131 30303330 32303137 30393330 31303130 31303132 30313731 30323530 30303735 35303030 30303030 30353535 33000000

分组后的数据

第 0组明文:36303030 31313230 31383131 31343131

第 1组明文:30303330 32303137 30393330 31303130

第 2组明文:31303132 30313731 30323530 30303735

第 3组明文:35303030 30303030 30353535 33000000

将分组过的字符串数组逐步进行异或运算

异或流程

第 0组明文: 36303030 31313230 31383131 31343131

第 1组明文: 30303330 32303137 30393330 31303130

第 1组异或结果:06000300 03010307 01010201 00040001

第 2组明文:31303132 30313731 30323530 30303735

第 2组异或结果:37303232 33303436 31333731 30343734

第3组明文:35303030 30303030 30353535 33000000

与第2组密文异或:02000202 03000406 01060204 03343734

将最后异或结果转化为16进制字符串

转换

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值