导读
虽然项目的源代码配置是在application.properties文件中,但是,如果使用的是明文账密,还是处于不安全状态,一旦泄露,将会造成不可计量的损失,故而使用一个加密来加密必要的信息,使得数据库更安全。
步骤
这里使用 jasypt-spring-boot-starter 来处理加密字符。官网详情点击查看。
1、导入依赖
<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.0</version></dependency>
2、生产加密数据
import org.jasypt.util.text.BasicTextEncryptor;public class EncryptionTest{public static void main(String[] args) {BasicTextEncryptor textEncryptor = new BasicTextEncryptor();//自定义加密所需的salt(盐值)textEncryptor.setPassword("salt123456");//要加密的数据(数据库的用户名或密码,当然你要是想让URL加密,也是可以的)String username = textEncryptor.encrypt("root");String password = textEncryptor.encrypt("123456");System.out.println("username:" + username);System.out.println("password:" + password);}}
每次启动生成的数据都不一样,这次启动控制台打印:
username:YxYODHKPIbPtwOBMdLbC7w==password:RV+Z9VVoDTDZsccOpDsrdw==Process finished with exit code 0
3、修改application.yml配置
# 数据库四大组件spring:datasource:username: ENC(YxYODHKPIbPtwOBMdLbC7w==)password: ENC(RV+Z9VVoDTDZsccOpDsrdw==)url: jdbc:mysql://localhost:3306/dbtest?characterEncoding=UTF-8&serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Driver# 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES,这里我选择的是默认的jasypt:encryptor:password: salt123456 #你自定义的盐值# algorithm: PBEWithMD5AndTripleDES
然后直接启动项目就OK了,测试,可以获取到相应的数据。
注意:如果怕盐值也泄露出去,你可以使用命令启动的时候传入进去盐值。
例如:
java -jar -Djasypt.encryptor.password=盐值 xxx.jar
完美解决。
