赞
踩
一、使用背景
项目中application.yml 配置文件中,如数据库、redis、加密算法的私钥等各种配置的username,password的值都是明文的,其实存在一定的安全隐患,如果被人拿到这些配置文件,将直接对系统安全构成极大威胁,为了加密敏感配置,我们可以使用jasypt 的方式进行明文加密。
jasypt.jar包下载地址: https://repo1.maven.org/maven2/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar
加密命令
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=123456Ab algorithm=PBEWithMD5AndDES
input为你的明文密码。
password为盐值。
algorithm 是一个规则,请勿更改
加密过程和结果
解密命令
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=bTd6xo3JQbyO4PO2iUWVNQ== password=123456Ab algorithm=PBEWithMD5AndDES
input为你的明文密码。
password为盐值。
algorithm 是一个规则,请勿更改
项目中引入依赖 在pom.xml里面添加下面内容
- <!-- jasypt -->
- <dependency>
- <groupId>org.jasypt</groupId>
- <artifactId>jasypt</artifactId>
- <version>1.9.2</version>
- </dependency>
上代码JsyptUtil.java
- package com.jasypt.tool;
-
- import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
- import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
-
- public class JsyptUtil {
-
- public static void main(String[] args) {
-
- String s = encryptPassword("123456Ab", "root");
- System.out.println("root加密后:" + s);
-
- String salt = decryptPassword("123456Ab", s);
- System.out.println("root解密后:" + salt);
-
- }
-
- public static SimpleStringPBEConfig encryJsypt(String password) {
- // 加解密配置
- SimpleStringPBEConfig config = new SimpleStringPBEConfig();
- config.setPassword(password);
- config.setAlgorithm("PBEWithMD5AndDES");
- config.setKeyObtentionIterations("1000");
- config.setPoolSize("1");
- config.setProviderName("SunJCE");
- config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
- config.setStringOutputType("base64");
- return config;
- }
-
- /*
- * 加密操作
- */
- public static String encryptPassword(String password, String value) {
- PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
- SimpleStringPBEConfig config = encryJsypt(password);
- encryptor.setConfig(config);
- String resutl_encrypt = encryptor.encrypt(value);
- return resutl_encrypt;
- }
-
- /*
- * 解密操作
- */
- public static String decryptPassword(String password, String value) {
- PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
- SimpleStringPBEConfig config = encryJsypt(password);
- encryptor.setConfig(config);
- String result_decrypt = encryptor.decrypt(value);
- return result_decrypt;
- }
- }
运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。