jasypt结合spring对数据库密码加密

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.jasypt介绍

            官网:http://www.jasypt.org/,里面有介绍jasypt是干嘛的,官网记得介绍:Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.大致意思是:Jasypt是一个Java库,允许开发者基本的加密功能添加到你所开发的项目以最少的投入,而不需要有密码技术是如何工作的很深的造诣。所以只要使用就行。

 2.项目实际开发

    2.1 添加jar包

        一般项目是使用maven管理,所以我们首先应该到,maven repository库里找到版本信息:


    org.jasypt
    jasypt
    1.9.2

    把上面的信息添加到pom.xml文件中进行。

    2.2 配置相关文件xml

        第一种方式:配置xml文件

  
          
          
      
      
          
      
      
          
          
              
                /WEB-INF/config.properties  
              
          
          
       

    最后,修改.properties配置中的明文密码为密文,这个需要自己写一个main方法,对其进行加密,然后把加密的结果,填写到.properties中:

public static void main(String[] args) {  
        //PBEWithMD5AndDES  
        BasicTextEncryptor encryptor = new BasicTextEncryptor();  
        encryptor.setPassword("root");  
        String encrypted = encryptor.encrypt("xxxx");  
        System.out.println(encrypted);  
    }  

    最后更改.properties的信息:

jdbc.password=ENC(jHv0WdiTLJFmOO08RQtUpg==)  

    2.2第二种方式:修改配置文件

  
          
              
                classpath:config.properties  
              
          
          
          
              
                orcl.password  
                sql.password  
              
          

    创建一个类:

public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {  
  
    private Set encryptedProps = Collections.emptySet();  
  
    public void setEncryptedProps(Set encryptedProps) {  
        this.encryptedProps = encryptedProps;  
    }  
      
    @Override  
    protected String convertProperty(String propertyName, String propertyValue) {  
        if (encryptedProps.contains(propertyName)) {  
            return EncryptUtil.decode(propertyValue);  
        }  
        return super.convertProperty(propertyName, propertyValue);  
    }  
  
}  

创建一个util加密算法:

    网上好多,这里不列举,只要能进行加密和进行解密的就行,不建议使用MD5,因为MD5是单向加密算法。

转载于:https://my.oschina.net/u/2380961/blog/708779

你可能感兴趣的:(数据库,java,python)