开发中,加密的算法都内嵌在代码里。实施人员,运维人员等没有编程能力,为提供加密后的jasypt配置项以及用于接口测试的自研加密密码,开发exe小工具,同时可以减少自研加密规则的暴露。
以我制作的Jasypt加密工具为例,效果如下
image.png
一、创建JavaFX项目
创建项目二、IDEA引入jar包到工程,编写Jasypt类
引入jar包public class Jasypt {
//Jasypt解密方法
public static String JasyptEncrypt(String password,String salt) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(盐)
textEncryptor.setPassword(salt);
//要加密的数据
String result = textEncryptor.encrypt(password);
return result;
}
}
三、编写Main类中的start方法
创建的JavaFX工程中会自带一个main类
通过在main类的start方法中创建一个GridPane面板,可以较为简单的创建出一个小的表单
运行该main方法可以测试我们写的方法
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Jasypt加密工具");
//网格布局方式,创建一个GridPane面板
GridPane grid = new GridPane();
//改变grid的默认位置,默认情况下,grid的位置是在其父容器的左上方,此处父容器是Scene,现在将grid移至Scene的中间
grid.setAlignment(Pos.CENTER);
//是用来设置该网格每行和每列之间的水平间距和垂直间距的
grid.setHgap(10);
grid.setVgap(10);
//设置了环绕在该网格面板上的填充距离,这里网格默认被设为在场景容器中居中,这里的填充距离是表示网格边缘距离里面内容的距离。
// 设置内边距,传入的是一个Insets对象,该insets对象的参数是:上,左,下,右
grid.setPadding(new Insets(25, 25, 25, 25));
//原始密码
Label passLabel = new Label("原始密码:");
grid.add(passLabel, 0, 1);
//原始密码输入文本框
TextField passInput = new TextField();
grid.add(passInput, 1, 1,2,1);
passLabel = new Label("加密盐:");
grid.add(passLabel, 0, 2);
TextField saltInput = new TextField();
grid.add(saltInput, 1, 2,2,1);
passLabel = new Label("加密密码:");
grid.add(passLabel, 0, 3);
final TextArea encrytStringText = new TextArea();
encrytStringText.setMaxSize(250, 100);
encrytStringText.setWrapText(true);
encrytStringText.setEditable(false);
grid.add(encrytStringText, 1, 3,2,1);
Button encryptButton = new Button("加密");
grid.add(encryptButton, 2, 4);
//声明点击事件,点击显示文本信息
encryptButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
try {
String password = passInput.getText();
String salt = saltInput.getText();
String encPass = Jasypt.JasyptEncrypt(password,salt);
StringBuilder encString = new StringBuilder();
encString.append("ENC(").append(encPass).append(")");
encrytStringText.setText(encString.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
});
//设置面板的大小
primaryStage.setScene(new Scene(grid, 500, 275));
primaryStage.show();
}
四、打包成exe
打包成exe教程,可以通过该方式进行JavaFX打包成exe,需要注意的是第三方jar包打到项目中
网友评论