2024-01-23 11:45:36 完成后端接口开发

master
魔神煜修罗皇 1 year ago
parent dd64dd7e03
commit 8c3843b4ef
  1. 16
      psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java
  2. 2
      psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java
  3. 14
      psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java
  4. 1
      psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java
  5. 6
      psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java
  6. 15
      psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml
  7. 22
      psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java

@ -2,14 +2,11 @@ package com.psdc.mapper;
import com.psdc.entity.SecretKey; import com.psdc.entity.SecretKey;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* @Author戴仕崑 * @author 小镇做题家
* @Projectpsdc
* @FilenameSecretKeyMapper
* @Slogan 致敬大师致敬未来的你
* @Date2024/1/22 17:02
* @Version 1.0
*/ */
@Mapper @Mapper
public interface SecretKeyMapper { public interface SecretKeyMapper {
@ -25,8 +22,11 @@ public interface SecretKeyMapper {
/** /**
* 更新数据 * 更新数据
* *
* @param secretKey 实例对象
* @return 影响行数 * @return 影响行数
*/ */
Integer update(SecretKey secretKey); Integer update(@Param(value = "newKey") String s1,
@Param(value = "oldKey") String s2);
SecretKey selOneByKey(@Param(value = "key") String s);
} }

@ -16,6 +16,6 @@ public interface ISecretKeyService {
Integer insert(SecretKey secretKey); Integer insert(SecretKey secretKey);
Integer update(SecretKey secretKey); Integer update(String s1, String s2);
} }

@ -28,6 +28,7 @@ public class GenerateKeyIml implements IGenerateKey {
static { static {
Security.addProvider(new BouncyCastleProvider()); Security.addProvider(new BouncyCastleProvider());
} }
private static final String SM4_KEY = "D30CCEEC367C55F0E4C7B3BE8207C5DD"; private static final String SM4_KEY = "D30CCEEC367C55F0E4C7B3BE8207C5DD";
private static final String ALGORITHM = "AES/ECB/PKCS5Padding"; private static final String ALGORITHM = "AES/ECB/PKCS5Padding";
@ -36,32 +37,25 @@ public class GenerateKeyIml implements IGenerateKey {
String key; String key;
SM4Util sm4Util = new SM4Util(); SM4Util sm4Util = new SM4Util();
try { try {
// 解密
String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY); String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY);
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC"); Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
SecretKeySpec secretKey = new SecretKeySpec(decryptBySM4ECB.getBytes(StandardCharsets.UTF_8), "AES"); SecretKeySpec secretKey = new SecretKeySpec(decryptBySM4ECB.getBytes(StandardCharsets.UTF_8), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey); cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8)); 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 | } catch (NoSuchPaddingException | IllegalBlockSizeException | NoSuchAlgorithmException | BadPaddingException |
NoSuchProviderException | InvalidKeyException e) { NoSuchProviderException | InvalidKeyException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return key; return key;
} }
private static String mapToString(Map<String, String> map) { private static String mapToString(Map<String, String> map) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) { for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&'); 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(); return sb.toString();
} }

@ -34,6 +34,7 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService {
public AjaxResult insert(PrivateKey privateKey) { public AjaxResult insert(PrivateKey privateKey) {
String key = RandomStringUtils.randomAlphabetic(16); String key = RandomStringUtils.randomAlphabetic(16);
SM4Util sm4Util = new SM4Util(); SM4Util sm4Util = new SM4Util();
// 加密
String encryptBySM4ECB = sm4Util.encryptBySM4ECB(key, SM4_KEY); String encryptBySM4ECB = sm4Util.encryptBySM4ECB(key, SM4_KEY);
privateKey.setKeyValue(encryptBySM4ECB); privateKey.setKeyValue(encryptBySM4ECB);
privateKey.setCreateTime(sdf.format(new Date())); privateKey.setCreateTime(sdf.format(new Date()));

@ -28,7 +28,7 @@ public class SecretKeyServiceImpl implements ISecretKeyService {
@Override @Override
public SecretKey selOne(String key, String date) { public SecretKey selOne(String key, String date) {
return null; return secretKeyMapper.selOneByKey(key);
} }
@Override @Override
@ -38,7 +38,7 @@ public class SecretKeyServiceImpl implements ISecretKeyService {
} }
@Override @Override
public Integer update(SecretKey secretKey) { public Integer update(String newKey, String oldKey) {
return null; return secretKeyMapper.update(newKey, oldKey);
} }
} }

@ -2,12 +2,25 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.psdc.mapper.SecretKeyMapper"> <mapper namespace="com.psdc.mapper.SecretKeyMapper">
<resultMap type="com.psdc.entity.SecretKey" id="SecretKeyMap">
<result property="id" column="id" />
<result property="keyValue" column="key_value" />
<result property="exportDate" column="export_date" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<insert id="insert" parameterType="com.psdc.entity.SecretKey"> <insert id="insert" parameterType="com.psdc.entity.SecretKey">
Insert into secret_key(key_value,export_date,create_time,update_time) Insert into secret_key(key_value,export_date,create_time,update_time)
values (#{keyValue},#{exportDate},#{createTime},#{updateTime}) values (#{keyValue},#{exportDate},#{createTime},#{updateTime})
</insert> </insert>
<update id="update"></update> <update id="update">
UPDATE `secret_key` set key_value = #{newKey}, update_time = now() WHERE key_value = #{oldKey}
</update>
<select id="selOneByKey" resultMap="SecretKeyMap">
Select * From secret_key Where key_value = #{key}
</select>
</mapper> </mapper>

@ -1,6 +1,7 @@
package com.psdc.controller.key; package com.psdc.controller.key;
import com.psdc.core.controller.BaseController;
import com.psdc.core.domain.AjaxResult; import com.psdc.core.domain.AjaxResult;
import com.psdc.entity.SecretKey; import com.psdc.entity.SecretKey;
import com.psdc.service.IGenerateKey; import com.psdc.service.IGenerateKey;
@ -8,10 +9,11 @@ import com.psdc.service.IPrivateKeyService;
import com.psdc.service.ISecretKeyService; import com.psdc.service.ISecretKeyService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.psdc.core.controller.BaseController;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
/** /**
@ -19,7 +21,7 @@ import java.util.Map;
*/ */
@RestController @RestController
@RequestMapping("/system/key") @RequestMapping("/system/key")
public class GenerateKeyController extends BaseController{ public class GenerateKeyController extends BaseController {
@Autowired @Autowired
IGenerateKey generateKey; IGenerateKey generateKey;
@ -31,7 +33,6 @@ public class GenerateKeyController extends BaseController{
IPrivateKeyService privateKeyService; IPrivateKeyService privateKeyService;
@PostMapping("/getKey") @PostMapping("/getKey")
public AjaxResult getGenerateKey(@RequestBody Map<String, Object> requestBody) { public AjaxResult getGenerateKey(@RequestBody Map<String, Object> requestBody) {
List<String> cpuIds = (List<String>) requestBody.get("cpuIds"); List<String> cpuIds = (List<String>) requestBody.get("cpuIds");
@ -39,21 +40,26 @@ public class GenerateKeyController extends BaseController{
String key = (String) requestBody.get("key"); String key = (String) requestBody.get("key");
String companyname = (String) requestBody.get("companyname"); String companyname = (String) requestBody.get("companyname");
Map map = new HashMap(); Map map = new HashMap();
map.put("companyname",companyname); map.put("companyname", companyname);
map.put("expireTime",expiration); map.put("expireTime", expiration);
map.put("cpuIds",cpuIds.toString()); map.put("cpuIds", cpuIds.toString());
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
String s = generateKey.generateKey(map, key); String s = generateKey.generateKey(map, key);
ajax.put("key", s); ajax.put("key", s);
SecretKey secretKey = new SecretKey(); SecretKey secretKey = new SecretKey();
secretKey.setKeyValue(s); secretKey.setKeyValue(s);
secretKey.setExportDate(expiration); 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; return ajax;
} }
@GetMapping("/selAll") @GetMapping("/selAll")
public AjaxResult queryById(){ public AjaxResult queryById() {
return privateKeyService.selectAll(); return privateKeyService.selectAll();
} }
} }

Loading…
Cancel
Save