zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    vs2005 水晶报表横向打印Bug
    petshop4.0 详解之七(PetShop表示层设计)
    petshop4.0 详解之八(PetShop表示层设计)
    在VS2005中使用VSS2005
    用DataFormatString格式化GridView
    GridView的高级用法
    水晶报表 打印时出现错误提示:出现通信错误。将停止打印
    POJ1182 食物链[并查集]
    并查集的基础知识
    HDOJ1269 迷宫城堡[强连通分量]
  • 原文地址:https://www.cnblogs.com/jrkl/p/14548177.html
Copyright © 2011-2022 走看看