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