项目集成jasypt加密配置文件
springboot集成jasypt
添加依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.version}</version>
</dependency>
注意:如果springboot版本是1.X,则jasypt版本不要超过2.0,否则项目启动报错。
配置加密密钥
在配置文件中配置加密密钥
jasypt:
encryptor:
password: 自定义的加密密钥
注意:该加密密钥可以通过 java -jar -Djasypt.encryptor.password=自定义的加密密钥进行设置,建议在生产环境中使用
编写测试类,获得加密后的数据
@Autowired
private StringEncryptor stringEncryptor;
/**
* 加密
*
* @param originPassword 原始密码
* @return java.lang.String
* @date 2021/10/15 23:28
*/
private String encrypt(String originPassword) {
return stringEncryptor.encrypt(originPassword);
}
/**
* 解密
*
* @param encryptedPassword 加密密码
* @return java.lang.String
* @date 2021/10/15 23:39
*/
private String decrypt(String encryptedPassword) {
return stringEncryptor.decrypt(encryptedPassword);
}
@Test
public void test01(){
String username = "数据库账号";
String password = "数据库密码";
String encryptUsername = encrypt(username);
String encryptPassword = encrypt(password);
String decryptUsername = decrypt(encryptUsername);
String decryptPassword = decrypt(encryptPassword);
System.out.println("加密前==================");
System.out.println(username);
System.out.println(password);
System.out.println("加密后==================");
System.out.println(encryptUsername);
System.out.println(encryptPassword);
System.out.println("解密后==================");
System.out.println(decryptUsername);
System.out.println(decryptPassword);
}
用加密后的数据替换配置文件中的内容
username: ENC(4VFVUM24U+l8cIBsqDB3n6aUl0Hyss/g)
password: ENC(tDCXAEl48I5nbXzpL+gLAg==)
注意:一定要用ENC()包裹,jasypt默认读取被ENC()包裹的内容进行解密。
到此,已经完成了配置文件的加密,可以尝试启动项目
SSM项目集成jasypt
添加依赖
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt-spring31</artifactId>
<version>${jasypt.version}</version>
</dependency>
修改配置文件,配置加密密钥
数据库等配置一般都是写在properties配置文件中,注释SSM框架中读取properties的bean配置
配置如下bean
<bean id="environmentStringPBEConfig" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<!-- 该配置将加密密钥直接放在配置文件中 -->
<property name="password" value="test"/>
<!-- 该配置将加密密钥作为tomcat启动参数,项目启动时传入 -->
<property name="passwordSysPropertyName" value="decryptKey"/>
<!-- 该配置将加密密钥作为服务器环境变量传入,如果采用此配置,需要配置服务器的环境变量 -->
<property name="passwordEnvName" value="decryptKey"/>
<!-- 以上三种配置,选择一种即可 -->
</bean>
<!-- 加密解密对象的配置 -->
<bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentStringPBEConfig"/>
</bean>
<!-- 注册读取properties文件的bean,代替原有的SSM框架读取properties文件的bean -->
<bean class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="encryptor"/>
<property name="location" value="classpath:dataSource.properties"/>
</bean>
编写测试类,获得加密后的数据
public static void fun01(String username, String password, String key){
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword(key);
String encryptUsername = encryptor.encrypt(username);
String encryptPassword = encryptor.encrypt(password);
String decryptUsername = encryptor.decrypt(encryptUsername);
String decryptPassword = encryptor.decrypt(encryptPassword);
System.out.println("加密前");
System.out.println("username = " + username);
System.out.println("password = " + password);
System.out.println("加密后");
System.out.println("username = " + encryptUsername);
System.out.println("password = " + encryptPassword);
System.out.println("解密后");
System.out.println("username = " + decryptUsername);
System.out.println("password = " + decryptPassword);
}
用加密后的数据替换properties文件中的内容
username=ENC(AFnRM2Q/k6FwOwlpKGhKE2BN92XLpuLv)
password=ENC(TVZproHkE5THCUvK7Nx4Tg==)
注意:一定要用ENC()包裹,jasypt默认读取被ENC()包裹的内容进行解密。
到此,已经完成了配置文件的加密,可以尝试启动项目
版权声明:本文为qq_39695044原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。