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