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

本文详细介绍了如何使用Java实现基于SM4算法的联机MAC数据计算,涉及ATM系统中MAC数据的校验过程,以及具体的加密步骤。通过对明文数据进行16进制转换、32位分组、不足32位补0,然后依次与秘钥进行异或加密,最终得到MAC密文数据。示例中提供了完整的步骤和秘钥、明文数据。
摘要由CSDN通过智能技术生成

商业银行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组密文异或得到异或结果

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值