SpringMVC配置jasypt 加密配置文件

21 篇文章 0 订阅
12 篇文章 0 订阅

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==)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值