天天看点

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

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

1、引入依赖

<!-- 数据库加密 -->
<dependency>
      <groupId>com.github.ulisesbocchio</groupId>
      <artifactId>jasypt-spring-boot-starter</artifactId>
      <version>2.0.0</version>
</dependency>
           

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依赖

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid</artifactId>

    <version>1.1.10</version>

</dependency>

<dependency>

    <groupId>log4j</groupId>

    <artifactId>log4j</artifactId>

    <version>1.2.17</version>

</dependency>

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的扫描路径下

}

继续阅读