Java工作笔记-Spring boot中配置文件加密(Jasypt的使用)

Jasypt Spring Boot提供了Spring Boot应用程序配置文件的加密。有下面3种方式在项目中集成jasypt-spring-boot:

1. 在classpath中添加jasypt-spring-boot-starter的jar包(maven添加对应的依赖),使用@SpringBootApplication及@EnableAutoConfiguration使得整个Spring环境中的配置文件都进行加密。

2. 在classpath中添加jasypt-spring-boot的jar包,在主配置类中添加@EnableEncryptableProperties注解。

3. classpath中添加jasypt-spring-boot的依赖为特定的配置文件进行加密使用@EncrytablePropertySource。

 

加密时提供一个密钥,然后进行加密。如下实例代码:

public class MyTest {

    /**
     * Jasypt生成加密结果
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待加密值
     * @return
     */
    public static String encryptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.encrypt(value);
        return result;
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待解密密文
     * @return
     */
    public static String decyptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.decrypt(value);
        return result;
    }

    public static SimpleStringPBEConfig cryptOr(String password) {
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        return config;
    }

    public static void main(String[] args) {
        // 加密
        String enc = encryptPwd("123456", "Hello world");
        System.out.println(enc);
        // 解密
        System.out.println(decyptPwd("123456", enc));
    }

}

程序运行截图如下:

在真实开发中,通常把这个密钥设置为环境变量(特定的用户才能跑此程序)。

然后在spring boot中设置application.properties

jasypt.encryptor.password=${HelloWordSalt}

Spring Boot中application.properties使用${变量}来获取环境变量。

 

这里跑的时候可以看到:

剩下的配置都jasypt都只采用默认的形式。

在实际开发中,可以写一个加密生成工具:

通过生成工具去加密及解密。

 

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页