From aa6fd3986a72524dea1547f2b1cce85ea71228bd Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 19 Oct 2023 17:16:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev
---
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IVerifyOutputService.java | 17 ++
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserEncipherServiceImpl.java | 14 ++
skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/entity/UserEncipher.java | 132 ++++++++++++++++++
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java | 2
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserEncipherService.java | 8 +
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java | 5
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java | 5
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java | 15 +
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/mapper/VerifyOutputMapper.java | 7 +
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java | 14 ++
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java | 29 ++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/service/impl/ISmLogManageServiceImpl.java | 20 ++
skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/VerifyOutputServiceImpl.java | 45 ++++++
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.xml | 7 +
skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/entity/VerifyOutput.java | 58 ++++++++
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.java | 7 +
skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java | 10 +
skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java | 6
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/mapper/SmLogManageMapper.xml | 3
skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java | 14 ++
20 files changed, 412 insertions(+), 6 deletions(-)
diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
index c8927ea..066103a 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
@@ -197,9 +197,11 @@
}
//解码Base64
- String base64Decode = Base64Utils.getBase64Decode(encryptRes.getData().getData());
+ String JSONstr = Base64Utils.getBase64Decode(encryptRes.getData().getData());
- UserSUPO userSUPO = JSONObject.parseObject(base64Decode, UserSUPO.class);
+ pwdClient.verify(loginUserInfo.getMaced(),loginUserInfo.getSm4iv(),loginUserInfo.getKeyindexs(),JSONstr,loginUserInfo.getId().toString(),"blade_user");
+
+ UserSUPO userSUPO = JSONObject.parseObject(JSONstr, UserSUPO.class);
//若登录用户的电话、角色、部门与原加密数据不符,登录失败
if (!(loginUserInfo.getPhone().equals(userSUPO.getPhone()) && loginUserInfo.getRoleId().equals(userSUPO.getRoleId()) && loginUserInfo.getDeptId().equals(userSUPO.getDeptId())) ){
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/entity/VerifyOutput.java b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/entity/VerifyOutput.java
new file mode 100644
index 0000000..87225cb
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/entity/VerifyOutput.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package cn.gistack.pwd.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 加密校验实体类
+ *
+ * @author Chill
+ */
+@Data
+@TableName("PWD_VERIFY_OUTPUT")
+@EqualsAndHashCode(callSuper = true)
+public class VerifyOutput extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 校验数据主键
+ */
+ private String dataId;
+
+ /**
+ * 校验表
+ */
+ private String source;
+
+ /**
+ * 校验结果
+ */
+ private String result;
+
+ private String message;
+ private String messageVerify;
+ private String maced;
+
+}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java
index 8e129cd..c453b63 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java
@@ -22,11 +22,17 @@
String API_PREFIX = "/client";
String GET_CBCMACENCIPHER = API_PREFIX + "/getCBCMacEncipher";
+ String GET_CBCMACENCIPHER_VERIFY = API_PREFIX + "/getCBCMacEncipherVerify";
String GET_ENCRYPT = API_PREFIX + "/getEncrypt";
String GET_DECRYPT = API_PREFIX + "/getDecrypt";
+ String VERIFY = API_PREFIX + "/verify";
+
@PostMapping(GET_CBCMACENCIPHER)
R<CBCResultDTO> getCBCMacEncipher(@RequestParam("message")String message);
+
+ @PostMapping(GET_CBCMACENCIPHER_VERIFY)
+ R<CBCResultDTO> getCBCMacEncipherVerify(@RequestParam("sm4Iv")String sm4Iv, @RequestParam("keyIndex")String keyIndex, @RequestParam("message")String message);
@PostMapping(GET_ENCRYPT)
R<ResultDTO> getEncrypt(@RequestParam("sm4Iv")String sm4Iv, @RequestParam("keyIndex")String keyIndex, @RequestParam("message")String message);
@@ -34,4 +40,12 @@
@PostMapping(GET_DECRYPT)
R<ResultDTO> getDecrypt(@RequestParam("sm4Iv")String sm4Iv, @RequestParam("keyIndex")String keyIndex, @RequestParam("message")String message);
+ @PostMapping(VERIFY)
+ R verify(@RequestParam("maced")String maced,
+ @RequestParam("sm4Iv")String sm4Iv,
+ @RequestParam("keyIndex")String keyIndex,
+ @RequestParam("message")String message,
+ @RequestParam("dataId")String dataId,
+ @RequestParam("source")String source);
+
}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java
index 7c6c163..094568d 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java
@@ -18,6 +18,11 @@
}
@Override
+ public R<CBCResultDTO> getCBCMacEncipherVerify(String sm4Iv, String keyIndex, String message) {
+ return R.fail("获取数据失败");
+ }
+
+ @Override
public R<ResultDTO> getEncrypt(String sm4Iv, String keyIndex, String message) {
return R.fail("获取数据失败");
}
@@ -26,4 +31,9 @@
public R<ResultDTO> getDecrypt(String sm4Iv, String keyIndex, String message) {
return R.fail("获取数据失败");
}
+
+ @Override
+ public R verify(String maced, String sm4Iv, String keyIndex, String message, String dataId, String source) {
+ return R.fail("获取数据失败");
+ }
}
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/entity/UserEncipher.java b/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/entity/UserEncipher.java
new file mode 100644
index 0000000..f02820a
--- /dev/null
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/entity/UserEncipher.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package cn.gistack.system.user.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+import org.springframework.boot.autoconfigure.security.SecurityProperties;
+
+import java.util.Date;
+
+/**
+ * 用户加密实体类
+ *
+ * @author Chill
+ */
+@Data
+@TableName("blade_user_encipher")
+@EqualsAndHashCode(callSuper = true)
+public class UserEncipher extends TenantEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 用户编号
+ */
+ private String code;
+ /**
+ * 用户平台
+ */
+ private Integer userType;
+ /**
+ * 账号
+ */
+ private String account;
+ /**
+ * 密码
+ */
+ private String password;
+ /**
+ * 昵称
+ */
+ private String name;
+ /**
+ * 真名
+ */
+ private String realName;
+ /**
+ * 头像
+ */
+ private String avatar;
+ /**
+ * 邮箱
+ */
+ private String email;
+ /**
+ * 手机
+ */
+ private String phone;
+ /**
+ * 生日
+ */
+ private Date birthday;
+ /**
+ * 性别
+ */
+ private Integer sex;
+ /**
+ * 角色id
+ */
+ private String roleId;
+ /**
+ * 部门id
+ */
+ private String deptId;
+ /**
+ * 岗位id
+ */
+ private String postId;
+
+ /**以下4个为加密字段**/
+ private String sm4iv;
+ private String keyindexs;
+ private String maced;
+ private String encdata;
+
+ public UserEncipher(User user){
+
+ this.setCode(user.getCode());
+ this.setUserType(user.getUserType());
+ this.setAccount(user.getAccount());
+ this.setPassword(user.getPassword());
+ this.setName(user.getName());
+ this.setRealName(user.getRealName());
+ this.setAvatar(user.getAvatar());
+ this.setEmail(user.getEmail());
+// this.setPhone(user.getPhone());
+ this.setBirthday(user.getBirthday());
+ this.setSex(user.getSex());
+ this.setRoleId(user.getRoleId());
+ this.setDeptId(user.getRoleId());
+ this.setPostId(user.getPostId());
+
+ this.setId(user.getId());
+ this.setCreateDept(user.getCreateDept());
+ this.setCreateUser(user.getCreateUser());
+ this.setCreateTime(user.getCreateTime());
+ this.setUpdateUser(user.getUpdateUser());
+ this.setUpdateTime(user.getUpdateTime());
+ this.setIsDeleted(user.getIsDeleted());
+ this.setStatus(user.getStatus());
+ this.setTenantId(user.getTenantId());
+
+
+ }
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java
index b848287..2758cae 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java
@@ -2,8 +2,10 @@
import cn.gistack.pwd.dto.CBCResultDTO;
import cn.gistack.pwd.dto.ResultDTO;
+import cn.gistack.pwd.entity.VerifyOutput;
import cn.gistack.pwd.fegin.IPwdClient;
import cn.gistack.pwd.service.IPwdSendService;
+import cn.gistack.pwd.service.IVerifyOutputService;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
@@ -24,10 +26,16 @@
public class PwdClient implements IPwdClient {
private final IPwdSendService pwdSendService;
+ private final IVerifyOutputService verifyOutputService;
@Override
public R<CBCResultDTO> getCBCMacEncipher(String message) {
return R.data(pwdSendService.getCBCMacEncipher(message));
+ }
+
+ @Override
+ public R<CBCResultDTO> getCBCMacEncipherVerify(String sm4Iv, String keyIndex, String message) {
+ return R.data(pwdSendService.getCBCMacEncipher(sm4Iv, keyIndex, message));
}
@Override
@@ -41,4 +49,10 @@
public R<ResultDTO> getDecrypt(String sm4Iv, String keyIndex, String message) {
return R.data(pwdSendService.getDecrypt(sm4Iv,keyIndex,message));
}
+
+ @Override
+ @PostMapping(VERIFY)
+ public R verify(String maced, String sm4Iv, String keyIndex, String message, String dataId, String source) {
+ return R.data(verifyOutputService.verifyMaced(maced,sm4Iv,keyIndex,dataId,source,message));
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/mapper/VerifyOutputMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/mapper/VerifyOutputMapper.java
new file mode 100644
index 0000000..b607537
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/mapper/VerifyOutputMapper.java
@@ -0,0 +1,7 @@
+package cn.gistack.pwd.mapper;
+
+import cn.gistack.pwd.entity.VerifyOutput;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface VerifyOutputMapper extends BaseMapper<VerifyOutput> {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java
index ed6f2d4..f27a5b1 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java
@@ -17,6 +17,8 @@
*/
CBCResultDTO getCBCMacEncipher(String message);
+ CBCResultDTO getCBCMacEncipher(String sm4Iv, String keyIndex, String message);
+
ResultDTO getEncrypt(String sm4Iv, String keyIndex, String message);
ResultDTO getDecrypt(String sm4Iv, String keyIndex, String message);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IVerifyOutputService.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IVerifyOutputService.java
new file mode 100644
index 0000000..7dfc5c5
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IVerifyOutputService.java
@@ -0,0 +1,17 @@
+package cn.gistack.pwd.service;
+
+import cn.gistack.pwd.entity.VerifyOutput;
+import org.springblade.core.mp.base.BaseService;
+
+public interface IVerifyOutputService extends BaseService<VerifyOutput> {
+
+ /**
+ * 验证数据完整性
+ * @param maced
+ * @param dataId
+ * @param source
+ * @param message
+ * @return
+ */
+ Boolean verifyMaced(String maced,String sm4Iv, String keyIndex,String dataId,String source,String message);
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java
index 14c3488..eee21ee 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java
@@ -25,6 +25,11 @@
}
@Override
+ public CBCResultDTO getCBCMacEncipher(String sm4Iv, String keyIndex, String message) {
+ return pwdSendRequestUtil.getCBCMacEncipher(sm4Iv, keyIndex, message);
+ }
+
+ @Override
public ResultDTO getEncrypt(String sm4Iv, String keyIndex, String message) {
return pwdSendRequestUtil.getEncrypt(sm4Iv, keyIndex, message);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/VerifyOutputServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/VerifyOutputServiceImpl.java
new file mode 100644
index 0000000..b229a6b
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/VerifyOutputServiceImpl.java
@@ -0,0 +1,45 @@
+package cn.gistack.pwd.service.impl;
+
+import cn.gistack.pwd.dto.CBCResultDTO;
+import cn.gistack.pwd.entity.VerifyOutput;
+import cn.gistack.pwd.mapper.VerifyOutputMapper;
+import cn.gistack.pwd.service.IPwdSendService;
+import cn.gistack.pwd.service.IVerifyOutputService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class VerifyOutputServiceImpl extends BaseServiceImpl<VerifyOutputMapper, VerifyOutput> implements IVerifyOutputService {
+
+ private final IPwdSendService pwdSendService;
+
+ @Override
+ public Boolean verifyMaced(String maced,String sm4Iv, String keyIndex,String dataId, String source, String message) {
+
+ CBCResultDTO cbcMacEncipher = pwdSendService.getCBCMacEncipher(sm4Iv, keyIndex, message);
+
+ String newMaced = cbcMacEncipher.getMaced();
+
+ String result = "验证成功,数据未被篡改";
+
+
+ boolean equals = maced.equals(newMaced);
+ //不等于
+ if (!equals){
+ result = "验证失败,数据已被篡改";
+ }
+
+ VerifyOutput verifyOutput = new VerifyOutput();
+
+ verifyOutput.setDataId(dataId);
+ verifyOutput.setSource(source);
+ verifyOutput.setResult(result);
+ verifyOutput.setMessage(message);
+ verifyOutput.setMessageVerify(newMaced);
+ verifyOutput.setMaced(maced);
+
+ return save(verifyOutput);
+ }
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java
index 257f407..deb117d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java
@@ -101,6 +101,35 @@
}
/**
+ * CBC加密 用户验证方法
+ *
+ * @param message keyIndex:密钥 sm4IV:base64后的16字节字符串 maced:MAC计算值
+ * @return
+ */
+ public CBCResultDTO getCBCMacEncipher(String sm4Iv, String keyIndex, String message) {
+
+ String url = urlPrefix + "/api/Http/scm";
+
+
+ JSONObject jsonParm = new JSONObject();
+ jsonParm.put("Action", "CBCMac");
+ jsonParm.put("DeviceType", "SCM");
+
+ JSONObject targetJson = new JSONObject();
+ targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis()));
+ targetJson.put("Token", getToken());
+ targetJson.put("KeyIndex", keyIndex);
+ targetJson.put("Message", message);
+ targetJson.put("Sm4IV", sm4Iv);
+
+ jsonParm.put("Target", targetJson);
+
+ ResultDTO ret = apiRequest(url, jsonParm.toJSONString());
+
+ return new CBCResultDTO(getKeyIndex(), sm4Iv, ret.getData());
+ }
+
+ /**
* 加密
* @param sm4Iv 算法为SM4时需要填写,16字节字符串
* @param keyIndex 密钥
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java
index 6280c56..441c853 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.jcsb.service.impl;
+import cn.gistack.common.utils.Base64Utils;
import cn.gistack.pwd.dto.CBCResultDTO;
import cn.gistack.pwd.dto.ResultDTO;
import cn.gistack.pwd.fegin.IPwdClient;
@@ -136,11 +137,15 @@
newEntity.setId(item.getId());
R<ResultDTO> res = pwdClient.getDecrypt(item.getSm4iv(), item.getKeyindexs(), item.getEncdata());
+
if (res.getCode() == 200){
newEntity.setBase64Data(res.getData().getData());
newEntity.setCreateTime(item.getCreateTime());
}
+ String jsonStr = Base64Utils.getBase64Decode(res.getData().getData());
+ pwdClient.verify(item.getMaced(),item.getSm4iv(),item.getKeyindexs(),jsonStr,id,"sm_danger_report");
+
return newEntity;
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/mapper/SmLogManageMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/mapper/SmLogManageMapper.xml
index 63e95ce..71045ac 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/mapper/SmLogManageMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/mapper/SmLogManageMapper.xml
@@ -42,6 +42,9 @@
L.STATUS,
L.IS_DELETED,
L.SOURCE,
+ L.SM4IV,
+ L.KEYINDEXS,
+ L.MACED,
U.real_name createUserName
FROM SM_LOG_MANAGE L
LEFT JOIN BLADE_USER U ON U.ID = L.CREATE_USER
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/service/impl/ISmLogManageServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/service/impl/ISmLogManageServiceImpl.java
index 4405330..53041e4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/service/impl/ISmLogManageServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/service/impl/ISmLogManageServiceImpl.java
@@ -1,6 +1,7 @@
package cn.gistack.sm.log.service.impl;
import cn.gistack.pwd.dto.CBCResultDTO;
+import cn.gistack.pwd.dto.ResultDTO;
import cn.gistack.pwd.fegin.IPwdClient;
import cn.gistack.sm.log.entity.SmLogManage;
import cn.gistack.sm.log.mapper.SmLogManageMapper;
@@ -46,7 +47,24 @@
@Override
public IPage<SmLogManageVO> selectPage(IPage<SmLogManageVO> page, SmLogManageVO smLogManage) {
- return page.setRecords(baseMapper.selectMyPage(page,smLogManage));
+ List<SmLogManageVO> list = baseMapper.selectMyPage(page, smLogManage);
+
+ list.forEach(smLogManageVO ->{
+ SmLogManage log = new SmLogManage();
+
+ log.setIp(smLogManageVO.getIp());
+ log.setOperationDescription(smLogManageVO.getOperationDescription());
+ log.setUrl(smLogManageVO.getUrl());
+ log.setSource(smLogManage.getSource());
+
+ String message = JSONObject.toJSONString(log);
+ pwdClient.verify(smLogManageVO.getMaced(),
+ smLogManageVO.getSm4iv(),
+ smLogManageVO.getKeyindexs(),
+ message,smLogManageVO.getId().toString(),"sm_log_manage");
+ });
+
+ return page.setRecords(list);
}
@Override
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.java
new file mode 100644
index 0000000..e28ef36
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.java
@@ -0,0 +1,7 @@
+package cn.gistack.system.user.mapper;
+
+import cn.gistack.system.user.entity.UserEncipher;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface UserEncipherMapper extends BaseMapper<UserEncipher> {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.xml
new file mode 100644
index 0000000..09b1656
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserEncipherMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gistack.system.user.mapper.UserEncipherMapper">
+
+
+
+</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserEncipherService.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserEncipherService.java
new file mode 100644
index 0000000..71e3414
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserEncipherService.java
@@ -0,0 +1,8 @@
+package cn.gistack.system.user.service;
+
+import cn.gistack.system.user.entity.User;
+import cn.gistack.system.user.entity.UserEncipher;
+import org.springblade.core.mp.base.BaseService;
+
+public interface IUserEncipherService extends BaseService<UserEncipher> {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserEncipherServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserEncipherServiceImpl.java
new file mode 100644
index 0000000..a7edb55
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserEncipherServiceImpl.java
@@ -0,0 +1,14 @@
+package cn.gistack.system.user.service.impl;
+
+import cn.gistack.system.user.entity.User;
+import cn.gistack.system.user.entity.UserEncipher;
+import cn.gistack.system.user.mapper.UserEncipherMapper;
+import cn.gistack.system.user.mapper.UserMapper;
+import cn.gistack.system.user.service.IUserEncipherService;
+import cn.gistack.system.user.service.IUserService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserEncipherServiceImpl extends BaseServiceImpl<UserEncipherMapper, UserEncipher> implements IUserEncipherService {
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
index a4cea02..63fb876 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -32,6 +32,7 @@
import cn.gistack.system.user.excel.UserExcel;
import cn.gistack.system.user.mapper.UserMapper;
import cn.gistack.system.user.service.IUserDeptService;
+import cn.gistack.system.user.service.IUserEncipherService;
import cn.gistack.system.user.service.IUserOauthService;
import cn.gistack.system.user.service.IUserService;
import cn.gistack.system.user.supo.UserSUPO;
@@ -82,6 +83,8 @@
private final BladeTenantProperties tenantProperties;
private final IPwdClient pwdClient;
+
+ private final IUserEncipherService userEncipherService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -145,10 +148,13 @@
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean save(User entity) {
//对User进行加密
encryptUserInfo(entity);
- return super.save(entity);
+ boolean saveUser = super.save(entity);
+ boolean saveUserEncipher = userEncipherService.save(new UserEncipher(entity));
+ return saveUserEncipher && saveUser;
}
@Override
@@ -174,11 +180,14 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean updateById(User entity) {
encryptUserInfo(entity);
+ boolean updateUser = super.updateById(entity);
+ boolean updateUserEncipher = userEncipherService.updateById(new UserEncipher(entity));
- return super.updateById(entity);
+ return updateUser&&updateUserEncipher;
}
private boolean submitUserDept(User user) {
@@ -381,7 +390,7 @@
if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) {
throw new ServiceException("不能删除本账号!");
}
- return deleteLogic(Func.toLongList(userIds));
+ return deleteLogic(Func.toLongList(userIds)) && userEncipherService.deleteLogic(Func.toLongList(userIds));
}
@Override
--
Gitblit v1.9.3