From c4e669cc403bea50878c48a2a2d4c03ba33477b1 Mon Sep 17 00:00:00 2001 From: hwj Date: Mon, 18 Dec 2023 09:42:20 +0800 Subject: [PATCH] 111 --- .gitignore | 33 +++++ pom.xml | 114 ++++++++++++++++++ .../com/dky/KeyGenerateToolApplication.java | 13 ++ .../dky/controller/GenerateKeyController.java | 21 ++++ src/main/java/com/dky/entity/KeyInfo.java | 16 +++ .../java/com/dky/service/GenerateKey.java | 7 ++ .../java/com/dky/service/GetPrivateKey.java | 5 + .../com/dky/service/Iml/GenerateKeyIml.java | 54 +++++++++ .../com/dky/service/Iml/GetPrivateKeyIml.java | 14 +++ src/main/resources/application.yml | 20 +++ src/main/resources/static/index.html | 109 +++++++++++++++++ .../dky/KeyGenerateToolApplicationTests.java | 13 ++ 12 files changed, 419 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/com/dky/KeyGenerateToolApplication.java create mode 100644 src/main/java/com/dky/controller/GenerateKeyController.java create mode 100644 src/main/java/com/dky/entity/KeyInfo.java create mode 100644 src/main/java/com/dky/service/GenerateKey.java create mode 100644 src/main/java/com/dky/service/GetPrivateKey.java create mode 100644 src/main/java/com/dky/service/Iml/GenerateKeyIml.java create mode 100644 src/main/java/com/dky/service/Iml/GetPrivateKeyIml.java create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/static/index.html create mode 100644 src/test/java/com/dky/KeyGenerateToolApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..9325532 --- /dev/null +++ b/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + com.dky + key-generate-tool + 0.0.1-SNAPSHOT + key-generate-tool + key-generate-tool + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.3 + + + mysql + mysql-connector-java + + + org.projectlombok + lombok + 1.18.12 + provided + + + com.alibaba + druid + 1.2.1 + + + org.xmlunit + xmlunit-core + + + org.mybatis + mybatis + 3.4.6 + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.dky.KeyGenerateToolApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/src/main/java/com/dky/KeyGenerateToolApplication.java b/src/main/java/com/dky/KeyGenerateToolApplication.java new file mode 100644 index 0000000..c24d799 --- /dev/null +++ b/src/main/java/com/dky/KeyGenerateToolApplication.java @@ -0,0 +1,13 @@ +package com.dky; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class KeyGenerateToolApplication { + + public static void main(String[] args) { + SpringApplication.run(KeyGenerateToolApplication.class, args); + } + +} diff --git a/src/main/java/com/dky/controller/GenerateKeyController.java b/src/main/java/com/dky/controller/GenerateKeyController.java new file mode 100644 index 0000000..4b8d991 --- /dev/null +++ b/src/main/java/com/dky/controller/GenerateKeyController.java @@ -0,0 +1,21 @@ +package com.dky.controller; + +import com.dky.service.GenerateKey; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.HashMap; +import java.util.Map; + +@Controller +public class GenerateKeyController { + @Autowired + GenerateKey generateKey; + @RequestMapping("/get_key") + public String getGenerateKey() { + Map map = new HashMap(); + map.put("name", "dky"); + return generateKey.generateKey(map); + } +} diff --git a/src/main/java/com/dky/entity/KeyInfo.java b/src/main/java/com/dky/entity/KeyInfo.java new file mode 100644 index 0000000..9675495 --- /dev/null +++ b/src/main/java/com/dky/entity/KeyInfo.java @@ -0,0 +1,16 @@ +package com.dky.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class KeyInfo { + public Integer id; + public String privateKey; + public String cpuId; + public String companyName; + public String key; +} diff --git a/src/main/java/com/dky/service/GenerateKey.java b/src/main/java/com/dky/service/GenerateKey.java new file mode 100644 index 0000000..2fcf1f3 --- /dev/null +++ b/src/main/java/com/dky/service/GenerateKey.java @@ -0,0 +1,7 @@ +package com.dky.service; + +import java.util.Map; + +public interface GenerateKey { + public String generateKey(Map map); +} diff --git a/src/main/java/com/dky/service/GetPrivateKey.java b/src/main/java/com/dky/service/GetPrivateKey.java new file mode 100644 index 0000000..5fd58ee --- /dev/null +++ b/src/main/java/com/dky/service/GetPrivateKey.java @@ -0,0 +1,5 @@ +package com.dky.service; + +public interface GetPrivateKey { + public String getPrivateKey(); +} diff --git a/src/main/java/com/dky/service/Iml/GenerateKeyIml.java b/src/main/java/com/dky/service/Iml/GenerateKeyIml.java new file mode 100644 index 0000000..1373718 --- /dev/null +++ b/src/main/java/com/dky/service/Iml/GenerateKeyIml.java @@ -0,0 +1,54 @@ +package com.dky.service.Iml; + +import com.dky.service.GenerateKey; +import org.springframework.stereotype.Service; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.util.Base64; +import java.util.Map; + +@Service +public class GenerateKeyIml implements GenerateKey { + private static final String SM4_KEY = "sm4demo123456789"; // 16 bytes key + private static final String ALGORITHM = "SM4/ECB/PKCS5Padding"; + + @Override + public String generateKey(Map map) { + String key; + try { + Cipher cipher = Cipher.getInstance(ALGORITHM, "BC"); + SecretKeySpec secretKey = new SecretKeySpec(SM4_KEY.getBytes(StandardCharsets.UTF_8), "SM4"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8)); + key=Base64.getEncoder().encodeToString(encrypted); + } catch (NoSuchPaddingException e) { + throw new RuntimeException(e); + } catch (IllegalBlockSizeException e) { + throw new RuntimeException(e); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } catch (BadPaddingException e) { + throw new RuntimeException(e); + } catch (NoSuchProviderException e) { + throw new RuntimeException(e); + } catch (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('&'); + } + return sb.toString(); + } +} diff --git a/src/main/java/com/dky/service/Iml/GetPrivateKeyIml.java b/src/main/java/com/dky/service/Iml/GetPrivateKeyIml.java new file mode 100644 index 0000000..5dbb271 --- /dev/null +++ b/src/main/java/com/dky/service/Iml/GetPrivateKeyIml.java @@ -0,0 +1,14 @@ +package com.dky.service.Iml; + +import com.dky.service.GenerateKey; + +import java.util.Map; + +public class GetPrivateKeyIml implements GenerateKey { + @Override + public String generateKey(Map map) { + //都数据库mybatis + + return null; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..83b4f47 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,20 @@ +server: + port: 8080 + +spring: + thymeleaf: + cache: false + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/key_generate_tool?serverTimezone=GMT%2B8&useSSL=true + username: root + password: hwj_lyq + type: com.alibaba.druid.pool.DruidDataSource + mybatis: + mapper-locations: classpath:mapper/*.xml + devtools: + restart: + enabled: true + + + diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 0000000..e253c71 --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,109 @@ + + + + 密钥生成工具 + + + + +
+

密钥生成工具

+
+
+
+ + + + +
+
+ +
+ djiefieji; + djiefieji; + djiefieji; + djiefieji; +
+ +
+
+
+ + +
+
+ + +
+ + +
+
+ + \ No newline at end of file diff --git a/src/test/java/com/dky/KeyGenerateToolApplicationTests.java b/src/test/java/com/dky/KeyGenerateToolApplicationTests.java new file mode 100644 index 0000000..8c0b32a --- /dev/null +++ b/src/test/java/com/dky/KeyGenerateToolApplicationTests.java @@ -0,0 +1,13 @@ +package com.dky; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class KeyGenerateToolApplicationTests { + + @Test + void contextLoads() { + } + +}