diff --git a/README.md b/README.md index caf7c50..3a899a8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ #### 1.2 spring security 加密 ![](./src/main/resources/static/redame/img_7.png) +#### 1.3 jks 文件生成 +![](./src/main/resources/static/redame/img_47.png) + ### 2. 影音工具 diff --git a/src/main/java/com/zhangmeng/tools/controller/JksFileController.java b/src/main/java/com/zhangmeng/tools/controller/JksFileController.java index 8ea7f34..f3210e4 100644 --- a/src/main/java/com/zhangmeng/tools/controller/JksFileController.java +++ b/src/main/java/com/zhangmeng/tools/controller/JksFileController.java @@ -3,6 +3,7 @@ package com.zhangmeng.tools.controller; import com.zhangmeng.tools.utils.AlertUtils; import com.zhangmeng.tools.utils.ImagePath; import com.zhangmeng.tools.utils.JksUtils; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TextArea; @@ -11,11 +12,19 @@ import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.stage.DirectoryChooser; import javafx.stage.Stage; +import org.bouncycastle.util.encoders.Base64; import java.io.File; +import java.io.FileInputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.util.Enumeration; /** * @author : 芊芊墨客 @@ -100,19 +109,68 @@ public class JksFileController { Path path = Paths.get(dir.getText() + jks_file_name.getText()); Path path2 = Paths.get(dir.getText() + cer_file_name.getText()); - try { - while (true){ - if (Files.exists(path) && Files.exists(path2)){ - break; + new Thread(()->{ + while (true){ + if (Files.exists(path)){ + break; + } + } + try { + readJks(dir.getText() + jks_file_name.getText(), "123456"); + } catch (Exception e) { + e.printStackTrace(); } - } - JksUtils.GetJksAndCerFile.readJks(dir.getText() + jks_file_name.getText(), "123456"); - JksUtils.GetJksAndCerFile.readCer(dir.getText() + cer_file_name.getText()); - } catch (Exception e) { - e.printStackTrace(); - } + }).start(); + new Thread(()->{ + while (true){ + if (Files.exists(path2)){ + break; + } + } + try { + readCer(dir.getText() + cer_file_name.getText()); + } catch (Exception e) { + e.printStackTrace(); + } + + }).start(); + + //&& Files.exists(path2) +// JksUtils.GetJksAndCerFile.readJks(dir.getText() + jks_file_name.getText(), "123456"); +// JksUtils.GetJksAndCerFile.readCer(dir.getText() + cer_file_name.getText()); + }); + } + + //读取证书文件获取公钥 + public void readCer(String file) throws Exception { + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Certificate certificate = certificateFactory.generateCertificate(new FileInputStream(file)); + PublicKey publicKey = certificate.getPublicKey(); + String cer = new String(Base64.encode(publicKey.getEncoded())); + cer_public.setText(cer); + } + + //读取jks文件获取公、私钥 + public void readJks(String file,String keypass) throws Exception { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(new FileInputStream(file), keypass.toCharArray()); + Enumeration aliases = keyStore.aliases(); + String alias = null; + while (aliases.hasMoreElements()) { + alias = aliases.nextElement(); + } + PrivateKey key = (PrivateKey) keyStore.getKey(alias, keypass.toCharArray()); + + Certificate certificate = keyStore.getCertificate(alias); + PublicKey publicKey = certificate.getPublicKey(); + String jks_p = new String(Base64.encode(publicKey.getEncoded())); + String private_key = new String(Base64.encode(key.getEncoded())) ; + + Platform.runLater(()->{ + jks_private.setText(private_key); + jks_public.setText(jks_p); }); } } diff --git a/src/main/resources/static/redame/img_47.png b/src/main/resources/static/redame/img_47.png new file mode 100644 index 0000000..f702153 Binary files /dev/null and b/src/main/resources/static/redame/img_47.png differ