SpirngMVC配置jasypt
需要引入的依赖
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt-spring31</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.2</version>
</dependency>
其中spring采用的版本是3.2.8.RELEASE
application.xml的配置
1.首先配置加密机
<bean id="environmentVariablesConfiguration"
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<!-- 这种方式可以配置在windows的环境变量里面,需要在系统级别设置环境变量 -->
<!-- <property name="passwordEnvName" value=""/> -->
<!-- passwordSysPropertyName的值就是用 System.getProperties() 获取的属性值,比如:value="${user.home}" -->
<!-- <property name="passwordSysPropertyName" value=""/> -->
<!-- password和使用jasypt命令行工具时的password参数用法一致 -->
<property name="password" value="example"/>
</bean>
如果想在配置文件中使用环境变量的话,比如把 example 注入到环境变量里
可以使用如下代码替换 example,需要在系统环境变量中加入 ENV_VARIABLE_NAME=example
#{systemEnvironment['ENV_VARIABLE_NAME']}
例如:
<property name="password" value="#{systemEnvironment['ENV_VARIABLE_NAME']}"/>
或者直接可以这样写
<property name="passwordEnvName" value="ENV_VARIABLE_NAME"/>
2.配置加密器
<!-- 配置加密器,将用于解密 -->
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
3.读取配置文件
<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" name="asda" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>classpath:properties/jdbc.properties</value>
<!--要是有多个配置文件,只需在这里继续添加即可 -->
</list>
</property>
</bean>
注意: 此处读取配置文件的类是 EncryptablePropertyPlaceholderConfigurer 并不是 PropertyPlaceholderConfigurer
明文加密
加密方式有两种:
1.使用main()方法加密
public static void main(String[] args) {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword("example");
String encrypted = encryptor.encrypt("root");//密码加密
System.out.println(encrypted);
}
2.使用jar包加密
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=root password=example algorithm=PBEWithMD5AndDES
替换配置文件
将配置文件中的数据库账号和密码替换,加密后的密文需要使用 ENC() 包括
替换之前
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/test
jdbc_username=root
jdbc_password=root
替换之后
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/test
jdbc_username=ENC(juWRm++CX1ZMq3SlmgnVYQ==)
jdbc_password=ENC(juWRm++CX1ZMq3SlmgnVYQ==)