java实现基于SM4算法计算联机MAC数据

商业银行ATM系统向银行前置系统发送请求报文时,会在报文中加上一串加密后的MAC数据,前置校验此MAC数据验证秘钥是否同步,报文是否完整。用于加密的原MAC数据一般是和前置约定好的报文中部分请求字段。

联机MAC数据实际上就是用一串128位的秘钥基于SM4算法对需要计算MAC的数据做加密处理。

例:

秘钥:C5945F5B DF1E2DD8 3C6BFCA9 699975F3

用于MAC计算的明文数据:PCK1209339432640F07BEC962141300010024402220516956


联机MAC的计算规则如下:

       将用于计算MAC的明文数据转换成16进制字符串,按32位长度分组,不足32位补0,转换后的数据共4组,如下:

      50434B31 32303933 33393433 32363430

      46303742 45433936 32313431 33303030

      31303032 34343032 32323035 31363935

      36000000 00000000 00000000 00000000

      步骤一:第0组明文和秘钥加密出第0组密文
     步骤二:第1组明文和第0组密文异或得到异或结果
     步骤三:步骤二的异或结果和秘钥加密得到第1组密文

     步骤四:第2组明文和第1组的密文异或得到异或结果

     步骤五:步骤四的异或结果和秘钥加密得到第2组密文

     步骤六:第3组明文和第2组密文异或得到异或结果

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值