數據加密、解密工具類
包含map和vo的數據轉換
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.crypto.SecureUtil;import java.util.HashMap;
import java.util.Map;/*** 數據解析**/
public class ParamUtils {/*** 數據解密** @param params 參數* @param secretKey key* @return 結果*/public static BatchApprovalParamVO dataDecrypt(String params, String secretKey) {// AES密?解密 params = batchNo=HJ-PLSP-202412-00044&approvalType=02&userId=114&tenantId=2String decrypt = SecureUtil.aes(secretKey.getBytes()).decryptStr(params);Map<String, Object> paramsMap = new HashMap<>();String[] pairs = decrypt.split(LOGICAL);for (String pair : pairs) {String[] keyValue = pair.split(EQUAL, 2);if (keyValue.length > 1) {paramsMap.put(keyValue[0], keyValue[1]);} else {paramsMap.put(keyValue[0], "");}}return BeanUtil.mapToBean(paramsMap, BatchApprovalParamVO.class, true);}/*** 數據加密** @param vo 數據* @param secretKey key* @return 結果*/public static String dataEncrypt(BatchApprovalParamVO vo, String secretKey) {// AES密?加密 params = batchNo=HJ-PLSP-202412-00044&approvalType=02&userId=114&tenantId=2Map<String, Object> map = BeanUtil.beanToMap(vo);StringBuilder sb = new StringBuilder();for (Map.Entry<String, Object> entry : map.entrySet()) {if (sb.length() > 0) {sb.append(LOGICAL);}sb.append(entry.getKey()).append(EQUAL).append(entry.getValue());}return SecureUtil.aes(secretKey.getBytes()).encryptHex(sb.toString());}}
實體類VO:
@Data
public class BatchApprovalParamVO {@Schema(description = "審批批次號")private String batchNo;@Schema(description = "審批類型:通過、駁回")private String approvalType;@Schema(description = "審批人id")private Long userId;@Schema(description = "租戶id")private Long tenantId;}