package com.stylefeng.guns.modular.system.util.zhenglian; import com.stylefeng.guns.modular.system.util.SpringContextsUtil; import com.stylefeng.guns.modular.system.util.zhenglian.model.MessageBody; import com.zlpay.assist.encrypt.sm4.SM4Util; import com.zlpay.assist.sign.sm2.SM2Util; import lombok.extern.slf4j.Slf4j; /** * @author zhibing.pu * @Date 2025/7/28 14:25 */ @Slf4j public class CallbackUtil { private static ZhengLianConfig zhengLianConfig = SpringContextsUtil.getBean(ZhengLianConfig.class).getZhengLianConfig(); public static String callback(MessageBody messageBody) { try { String data = messageBody.getData(); String sign = messageBody.getSign(); String secret = messageBody.getSecret(); //加密对称加密的秘钥 // 获取公钥 String publicKey = ZhengLianUtil.getPublicKey(); // 验签 boolean checkResult = SM2Util.verify(publicKey, zhengLianConfig.getEncrpNo(), sign, data); System.out.println("验签结果:" + checkResult); // 获取私钥 String privateKey = ZhengLianUtil.getPrivateKey(); // 解密对称秘钥 String k = SM2Util.decrypt(privateKey, secret); System.out.println("对称秘钥:" + k); // 解密业务报文 String backData = SM4Util.sm4EcbDecrypt(k, data); System.out.println("业务报文:" + backData); return backData; } catch (Exception e) { e.printStackTrace(); } return null; } }