jasypt与Spring结合使用(配置文件中数据库密码加密)

使用jasypt对配置文件进行加密

数据库连接的密码一般要进行加密处理,在程序部署运行时对其进行解密连接数据库,保证Spring配置中数据库的连接相关敏感数据不至于明文暴露。

首先在项目中pom.xml文件中加入jasypt相关依赖包



    org.jasypt
    jasypt
    1.9.2


    org.jasypt
    jasypt-spring31
    1.9.2
 

 

然后在applicationContext.xml(Spring配置文件中,通常是放数据库连接相关配置那个文件)


	
    
    
        
        
    
    
    
        
    
    
    
        
        
            
                classpath:jdbc.properties
            
        
      

		 
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	 
	

 

jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=ENC(1pZhXWKDIcSKnewTij1B12S6kcIA8h6w)

jdbc.password=ENC(1pZhXWKDIcSKnewTij1B12S6kcIA8h6w)

password的加密结果放置在ENC(机密结果)中,这样的写法是jasypt的规定;加密结果怎么生成后面会说,不要急!

 

 

jasypt官方网站:http://www.jasypt.org/  下载jasypt包,解压缩到本地目录,然后打开命令行cmd进入该文件的bin目录下

jasypt与Spring结合使用(配置文件中数据库密码加密)_第1张图片

 

 

下面进行加密操作,输入命令:

encrypt.bat input=root123456 password=haha algorithm=PBEWithMD5AndDES

jasypt与Spring结合使用(配置文件中数据库密码加密)_第2张图片

input:你要加密的字符串(这里是数据库密码)

password:口令(可以简单理解为解码的时候需要同一个标识符吧,通常配置成本地环境变量,上面的代码是以这种方式配的,后面会说怎么配成本地环境变量,实际开发建议这样做)

algorithm:加密算法(PBEWITHHMACSHA1ANDAES_128, PBEWITHHMACSHA1ANDAES_256, PBEWITHHMACSHA224ANDAES_128, PBEWITHHMACSHA224ANDAES_256, PBEWITHHMACSHA256ANDAES_128, PBEWITHHMACSHA256ANDAES_256, PBEWITHHMACSHA384ANDAES_128, PBEWITHHMACSHA384ANDAES_256, PBEWITHHMACSHA512ANDAES_128, PBEWITHHMACSHA512ANDAES_256, PBEWITHMD5ANDDES, PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_128, PBEWITHSHA1ANDRC2_40, PBEWITHSHA1ANDRC4_128, PBEWITHSHA1ANDRC4_40)选一种自己喜欢的吧,我这里选了PBEWithMD5AndDES

OUTPUT:下面的字符串就是生成的密文,可以复制过来放到jdbc.properties文件里的jdbc.password的值啦

 

 

下面进行解密操作,输入命令:

decrypt.bat input=1pZhXWKDIcSKnewTij1B12S6kcIA8h6w password=haha algorithm=PBEWithMD5AndDES

jasypt与Spring结合使用(配置文件中数据库密码加密)_第3张图片

input:你要解密的字符串(这里是上面生成的密文)

password:口令(加密过程一样的字符串,现在知道这个有什么用了吧)

algorithm:加密算法(输入加密过程一样的算法)

OUTPUT:下面的字符串就是生成的明文,可以那来对比加密前的字符串

 

 

注意!!!注意!!!注意!!!

关于这个口令的配置方式(3种)

1.配置本地环境变量的方式:(本文代码也是用这种方式):



    
    

passwordEnvName的值直接设置为环境变量,比如value="APP_ENCRYPTION_PASSWORD", APP_ENCRYPTION_PASSWORD则是系统环境变量,具体使用步骤如:配置环境变量APP_ENCRYPTION_PASSWORD--> 启动应用程序 --> 应用程序启动完成  --> 删除环境变量APP_ENCRYPTION_PASSWORD(window和Linux配置不一样,建议搜索一下怎么配,比较简单,这里就不多说了)

jasypt与Spring结合使用(配置文件中数据库密码加密)_第4张图片

 

2.直接配置方式(这样口令就暴露在这个配置文件里面,不太建议)



    
    

 

3.properties文件方式(也不太建议,还不如前面两种)

passwordSysPropertyName的值就是用 System.getProperties() 获取的属性值



    
    

 

你可能感兴趣的:(jasypt与Spring结合使用(配置文件中数据库密码加密))