0
点赞
收藏
分享

微信扫一扫

SpringMVC配置jasypt

腾讯优测 2022-01-12 阅读 60
javaspring

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']}"/>
  1. 配置加密器
	<!-- 配置加密器,将用于解密 -->
	<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
		<property name="config" ref="environmentVariablesConfiguration" />
	</bean>
  1. 读取配置文件
    <!-- 引入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 条评论