Java jasypt对.properties配置文件密码加密

   Java 开发时,经常涉及到读取Properties配置文件来加载一些配置信息,但是一些敏感信息,比如:登陆密码,数据库访问密码等,就会暴露在配置文件里面。


                                    


    现介绍一种加密方法Jasypt框架,来实现对敏感信息的加密。


   1,通过Java代码实现

先将明文密码加密:

 StandardPBEStringEncryptor encrypter = new StandardPBEStringEncryptor();
        //密钥
        encrypter.setPassword("1234567890");

        String newPassword = encrypter.encrypt("BB2012");  
        
        System.out.println(newPassword);

将加密密文配置到配置文件:

   

# setting of c3p0
c3p0.driverClass=oracle.jdbc.driver.OracleDriver
c3p0.jdbcUrl=jdbc:oracle:thin:@172.16.27.34:1521:vmdb
c3p0.user=BB_BGW
c3p0.password=ENC(s+x/tTsknpvuTSRy/xoTUw==)

解密处理类:(密钥暂时写死,生产上会单独配置)

package com.bestpay.sag.common;

import java.io.InputStream;
import java.util.Properties;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.properties.EncryptableProperties;


/*
 * @author  weizhi
 * 
 * @Date 20130710
 */
public class DbUtil {

	private static DbUtil instance = new DbUtil();
	// 密钥
	private static String KEY = "1234567890";
	private static StandardPBEStringEncryptor encryptor;
	private static Properties p;

	public static DbUtil getInstance() {
		return instance;
	}

	static {
		initProperties();
	}

	// 初始化配置
	public static void initProperties() {
		try {
			encryptor = new StandardPBEStringEncryptor();
			encryptor.setPassword(KEY);
			InputStream in = ClassLoader
					.getSystemResourceAsStream("c3p0.properties");
			p = new EncryptableProperties(encryptor);
			p.load(in);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 取Properties Value值
	public String getValue(String name) {
		try {
			String pass = p.getProperty(name);
			return pass;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

解梦结果:


public class TestEncrypt {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
        
        System.out.println(DbUtil.getInstance().getValue("c3p0.password"));
		
	}

}

output : BB2013


2.Spring方式实现

配置文件c3p0配置密文


Spring  applicationContext.xml配置增加如下配置:

	<bean id="environmentVariablesConfiguration"
		class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
		<!--  指定加密算法: PBEWithMD5AndDES -->
		<property name="algorithm" value="PBEWithMD5AndDES" />
		<!--指定密钥:PTSPASSWORD-->
		<property name="password" value="1234567890" />
	</bean>

	<!--指定加密类: StandardPBEStringEncryptor -->
	<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
		<property name="config" ref="environmentVariablesConfiguration" />
	</bean>

	<!--指定要已被加密的属性文件c3p0.properties Jasypt集成了对spring的属性文件解密 -->
	<bean id="propertyConfigurer"
		class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
		<constructor-arg ref="configurationEncryptor" />
		<property name="locations">
			<list>
				<value>c3p0.properties</value>
			</list>
		</property>
	</bean>




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JasyptJava Simplified Encryption)是一个Java加密库,它可以用来加密/解密文本、哈希密码等。Spring Boot提供了对Jasypt的支持,可以在应用程序中轻松使用Jasypt加密敏感信息。下面是使用Jasypt对MySQL配置文件进行加密的步骤: 1. 引入Jasypt依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 配置加密 在application.properties或者application.yml中添加以下配置: ```properties jasypt.encryptor.password=your_password ``` 其中,your_password是用来加密敏感信息的密码。 3. 加密MySQL配置信息 在application.properties或者application.yml中加入MySQL配置信息,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root ``` 将密码部分使用Jasypt进行加密,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=ENC(加密后的密码) ``` 其中,加密后的密码可以使用Jasypt提供的加密工具进行加密。例如,我们可以使用以下命令生成加密后的密码: ``` java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password="your_password" algorithm=PBEWithMD5AndDES ``` 其中,jasypt-1.9.2.jar是Jasypt的jar包,your_password是用来加密敏感信息的密码。执行以上命令后,会输出加密后的密码。 4. 配置解密 在启动应用程序时,Spring Boot会自动解密加密的敏感信息。因此,我们不需要任何额外的配置来解密MySQL密码。只需将加密后的密码放入配置文件即可。 至此,我们已经成功地使用Jasypt对MySQL配置文件进行了加密

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值