SpringBoot项目配置文件密码加密(jasypt)

jasypt由于其使用的是PBEWithMD5AndDES加密方式,每次加密出来的结果都不一样,很适合对数据进行加密.

1、引入依赖



      com.github.ulisesbocchio
      jasypt-spring-boot-starter
      2.0.0

2、然后再yml或者properties中配置

jasypt.encryptor.password=nmyswls

这个是盐值

3、测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class test_jiami {

    @Autowired
    StringEncryptor stringEncryptor;

    @Test
    public void encryptPwd() {
        String result = stringEncryptor.encrypt("root");
        System.out.println(result);
    }

}

这里面的参数是你的密码,然后返回来的是加密后的密码:yyrqk9reuY5kScmS3D9mWQ==

4、将加密后的密码贴到配置文件中

spring.datasource.password=ENC(yyrqk9reuY5kScmS3D9mWQ==)

注意测试类不要提交上去。

另一种方法:

在你的maven仓库中找到:D:\repository\org\jasypt\jasypt\1.9.2,这个包就是加密的包了

cmd在这个包下执行如下命令,它会返回你加密后的密码:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=zhang algorithm=PBEWithMD5AndDES

其中:

input:是数据库的明文密码

password:是机密的盐

algorithm:是加密的方式(默认)

然后在配置文件中把盐加进去就ok了

 

 

补充:

默认jasypt的密钥是放在配置文件中但这样会导致密文和密钥都在配置文件中,所以我把密钥放在程序中。

public static void main(String[] args) {
        /**  配置加解密跟秘钥,与配置文件的密文分开放  */
        System.setProperty("jasypt.encryptor.password", ConstantValue.JASYPT_ENCRYPTOR_PASSWORD);

        SpringApplication.run(OrderApplication.class, args);
}

 

 

springboot 还可以使用druid对密码进行加密

1.首先要加入druid的maven依赖和log4j依赖



    com.alibaba
    druid
    1.1.10


    log4j
    log4j
    1.2.17

 

2.生成RSA密码

java -cp C:\Users\admin\.m2\mavenrepository\com\alibaba\druid\1.1.10\druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 123456
 

3、配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=admin
spring.datasource.password =v3B2kpWSwA1zlGXL+T9rtcOTXZ3/PfDwckaxIPFr7VGsgZa4o8TGBJ+Qb3VyK1LJGARvaZju/E73trRMEFE28A== 
spring.datasource.publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANZWTGLh2RCe8Loww1byCWE9X8aOSHu8j0uTtVNe/Cf8l17BNgRdy0+QzA66InWUvHHU03DGoLjS/4tOuoGzlC0CAwEAAQ==
 

4、建数据库配置类

@Configuration

@ConfigurationProperties(prefix = "spring.datasource")

public class DruidDatsSourceConfig {

     ........

    @Bean

    @Primary

    public DataSource druidDataSource() throws Exception {

          DruidDataSource datasource = new DruidDataSource();

          datasource.setPassword(ConfigTools.decrypt(publicKey, password));

         ......

   }

注:DruidDatsSourceConfig 类要在spring boot的扫描路径下

}

你可能感兴趣的:(SpringBoot)