• springgboot集成Jasypt 加密


    1、加密工具方法(可以自行抽出来打成包运行):
    import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
    import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
    import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

    /**
    * @author wks
    * @Title admin
    * @date 2021/3/17
    * @Descpription TODO
    */
    public class JasyptUtils {
    /**
    * 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;
    }

    /**
    * @param password salt
    * @return
    */
    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(null);
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    config.setStringOutputType("base64");
    return config;
    }

    public static void main(String[] args) {
    // 加密
    //System.out.println(encryptPwd("EbfYkitulv73I2p0mXI50JMXoaxZTKJ7", "root@1234"));
    // 解密
    // mysql@1234
    //System.out.println(decyptPwd("sunsoft123", "a8fd7i0uUYPHW7ZhLF4uyA=="));

    // root@1234
    // System.out.println(decyptPwd("EbfYkitulv73I2p0mXI50JMXoaxZTKJ7", "tdHzge8YvviOJaiV/+P6uQ9wgB44D1aH"));

    String password = "sunsoft123";
    String data = "123456";

    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
    SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    config.setPassword(password);
    config.setAlgorithm("PBEWithMD5AndDES");
    config.setKeyObtentionIterations("1000");
    config.setPoolSize("1");
    config.setProviderName(null);
    config.setProviderClassName(null);
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    config.setIvGeneratorClassName("org.jasypt.salt.NoOpIVGenerator");
    config.setStringOutputType("base64");
    encryptor.setConfig(config);

    System.out.println(encryptor.encrypt(data));

    }

    }
    
    

    2. pom.xml增加jasypt-spring-boot-starter依赖

           <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>

    3、application.properties使用加密了的配置
    spring.datasource.username=ENC(25j23414123FYdxkWJ+YKMZYHl34==)
    spring.datasource.password=ENC(25gjpuolmUcBoW343yuyJ+343344==)

    4、配置密码

    可配置在application.properties文件中(这种方式不安全)

    jasypt.encryptor.password=123456

    在JVM启动参数中设置

    -Djasypt.encryptor.password=123456



  • 相关阅读:
    第四百九十六天 how can I 坚持
    第四百九十四、五天 how can I 坚持
    第四百九十三天 how can I 坚持
    第四百九十二天 how can I 坚持
    第四百九十一天 how can I 坚持
    第四百九十天 how can I 坚持
    第四百八十九天 how can I 坚持
    第四百八十八天 how can I 坚持
    第四百八十七天 how can I 坚持
    第四百八十六天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/jrkl/p/14548177.html
Copyright © 2020-2023  润新知