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. 17
      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 org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @Author戴仕崑
* @Projectpsdc
* @FilenameSecretKeyMapper
* @Slogan 致敬大师致敬未来的你
* @Date2024/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);
}

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

@ -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<String, String> map) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> 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();
}

@ -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()));

@ -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);
}
}

@ -2,12 +2,25 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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 into secret_key(key_value,export_date,create_time,update_time)
values (#{keyValue},#{exportDate},#{createTime},#{updateTime})
</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>

@ -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<String, Object> requestBody) {
List<String> cpuIds = (List<String>) 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();
}
}

Loading…
Cancel
Save