From 8c3843b4ef830e552b9eb90fafe0187f6fac83bf Mon Sep 17 00:00:00 2001 From: XMnhwj_BackTechnologyDevelopment <3512363680@qq.com> Date: Tue, 23 Jan 2024 11:54:03 +0800 Subject: [PATCH] =?UTF-8?q?2024-01-23=2011:45:36=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/psdc/mapper/SecretKeyMapper.java | 16 +++++++------- .../com/psdc/service/ISecretKeyService.java | 2 +- .../com/psdc/service/impl/GenerateKeyIml.java | 14 ++++-------- .../service/impl/PrivateKeyServiceImpl.java | 1 + .../service/impl/SecretKeyServiceImpl.java | 6 ++--- .../mapper/business/SecretKeyMapper.xml | 17 ++++++++++++-- .../controller/key/GenerateKeyController.java | 22 ++++++++++++------- 7 files changed, 46 insertions(+), 32 deletions(-) diff --git a/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java b/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java index 6da06bc..2906332 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java @@ -2,14 +2,11 @@ package com.psdc.mapper; import com.psdc.entity.SecretKey; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + /** - * @Author:戴仕崑 - * @Project:psdc - * @Filename:SecretKeyMapper - * @Slogan 致敬大师,致敬未来的你 - * @Date:2024/1/22 17:02 - * @Version 1.0 + * @author 小镇做题家 */ @Mapper public interface SecretKeyMapper { @@ -25,8 +22,11 @@ public interface SecretKeyMapper { /** * 更新数据 * - * @param secretKey 实例对象 * @return 影响行数 */ - Integer update(SecretKey secretKey); + Integer update(@Param(value = "newKey") String s1, + @Param(value = "oldKey") String s2); + + + SecretKey selOneByKey(@Param(value = "key") String s); } diff --git a/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java b/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java index 127dc37..0687e21 100644 --- a/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java +++ b/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java @@ -16,6 +16,6 @@ public interface ISecretKeyService { Integer insert(SecretKey secretKey); - Integer update(SecretKey secretKey); + Integer update(String s1, String s2); } diff --git a/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java b/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java index 4ae79a4..60e3c7e 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java @@ -28,6 +28,7 @@ public class GenerateKeyIml implements IGenerateKey { static { Security.addProvider(new BouncyCastleProvider()); } + private static final String SM4_KEY = "D30CCEEC367C55F0E4C7B3BE8207C5DD"; private static final String ALGORITHM = "AES/ECB/PKCS5Padding"; @@ -36,32 +37,25 @@ public class GenerateKeyIml implements IGenerateKey { String key; SM4Util sm4Util = new SM4Util(); try { + // 解密 String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY); Cipher cipher = Cipher.getInstance(ALGORITHM, "BC"); SecretKeySpec secretKey = new SecretKeySpec(decryptBySM4ECB.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8)); - key= Base64.getEncoder().encodeToString(encrypted); + key = Base64.getEncoder().encodeToString(encrypted); } catch (NoSuchPaddingException | IllegalBlockSizeException | NoSuchAlgorithmException | BadPaddingException | NoSuchProviderException | InvalidKeyException e) { throw new RuntimeException(e); } return key; } + private static String mapToString(Map map) { StringBuilder sb = new StringBuilder(); for (Map.Entry entry : map.entrySet()) { sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&'); } -// public static void main(String[] args) throws IOException { -// //key为spring.datasource.key的值 -// String key = "D30CCEEC367C55F0E4C7B3BE8207C5DD"; -// SM4Util sm4Util = new SM4Util(); -// String encryptBySM4ECB = sm4Util.encryptBySM4ECB("admin", key); -// System.out.println(encryptBySM4ECB); -// String decryptBySM4ECB = sm4Util.decryptBySM4ECB(encryptBySM4ECB, key); -// System.out.println(decryptBySM4ECB); -// } return sb.toString(); } diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java index f43faae..c5064b1 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java @@ -34,6 +34,7 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService { public AjaxResult insert(PrivateKey privateKey) { String key = RandomStringUtils.randomAlphabetic(16); SM4Util sm4Util = new SM4Util(); + // 加密 String encryptBySM4ECB = sm4Util.encryptBySM4ECB(key, SM4_KEY); privateKey.setKeyValue(encryptBySM4ECB); privateKey.setCreateTime(sdf.format(new Date())); diff --git a/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java index b768403..0ee1672 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java @@ -28,7 +28,7 @@ public class SecretKeyServiceImpl implements ISecretKeyService { @Override public SecretKey selOne(String key, String date) { - return null; + return secretKeyMapper.selOneByKey(key); } @Override @@ -38,7 +38,7 @@ public class SecretKeyServiceImpl implements ISecretKeyService { } @Override - public Integer update(SecretKey secretKey) { - return null; + public Integer update(String newKey, String oldKey) { + return secretKeyMapper.update(newKey, oldKey); } } diff --git a/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml b/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml index e5559bc..c234de6 100644 --- a/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml @@ -2,12 +2,25 @@ + + + + + + + Insert into secret_key(key_value,export_date,create_time,update_time) values (#{keyValue},#{exportDate},#{createTime},#{updateTime}) - - + + + UPDATE `secret_key` set key_value = #{newKey}, update_time = now() WHERE key_value = #{oldKey} + + + \ No newline at end of file diff --git a/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java b/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java index 2507cb3..2a5abad 100644 --- a/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java +++ b/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java @@ -1,6 +1,7 @@ package com.psdc.controller.key; +import com.psdc.core.controller.BaseController; import com.psdc.core.domain.AjaxResult; import com.psdc.entity.SecretKey; import com.psdc.service.IGenerateKey; @@ -8,10 +9,11 @@ import com.psdc.service.IPrivateKeyService; import com.psdc.service.ISecretKeyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import com.psdc.core.controller.BaseController; + import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; /** @@ -19,7 +21,7 @@ import java.util.Map; */ @RestController @RequestMapping("/system/key") -public class GenerateKeyController extends BaseController{ +public class GenerateKeyController extends BaseController { @Autowired IGenerateKey generateKey; @@ -31,7 +33,6 @@ public class GenerateKeyController extends BaseController{ IPrivateKeyService privateKeyService; - @PostMapping("/getKey") public AjaxResult getGenerateKey(@RequestBody Map requestBody) { List cpuIds = (List) requestBody.get("cpuIds"); @@ -39,21 +40,26 @@ public class GenerateKeyController extends BaseController{ String key = (String) requestBody.get("key"); String companyname = (String) requestBody.get("companyname"); Map map = new HashMap(); - map.put("companyname",companyname); - map.put("expireTime",expiration); - map.put("cpuIds",cpuIds.toString()); + map.put("companyname", companyname); + map.put("expireTime", expiration); + map.put("cpuIds", cpuIds.toString()); AjaxResult ajax = AjaxResult.success(); String s = generateKey.generateKey(map, key); ajax.put("key", s); SecretKey secretKey = new SecretKey(); secretKey.setKeyValue(s); secretKey.setExportDate(expiration); - secretKeyService.insert(secretKey); + SecretKey selOne = secretKeyService.selOne(s, expiration); + if (Optional.ofNullable(selOne).isPresent()) { + secretKeyService.update(s, selOne.getKeyValue()); + } else { + secretKeyService.insert(secretKey); + } return ajax; } @GetMapping("/selAll") - public AjaxResult queryById(){ + public AjaxResult queryById() { return privateKeyService.selectAll(); } }