Jasypt:加解与解密

Jasypt加解密配置文件 https://my.oschina.net/u/3403903/blog/904055

使用 Jasypt 保护数据库配置 http://www.cnblogs.com/javalouvre/p/3746397.html

jasypt与Spring结合使用说明 http://aiilive.blog.51cto.com/1925756/1420903

首先,我们引入依赖库,使用Maven方式如下:


    org.jasypt
    jasypt
    1.5

其次,接下来我们看看如何加密:

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
 
/**
 *把密文放到配置文件中的时候要注意:
 * ENC(密文)
 * @author 杨尚川
 */
public class ConfigEncryptUtils {
    public static void main(String[] args){
        //加密工具
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm("PBEWithMD5AndDES");
        //自己在用的时候更改此密码
        config.setPassword("apdplat");
        //应用配置
        encryptor.setConfig(config);
        String plaintext="root";
        //加密
        String ciphertext=encryptor.encrypt(plaintext);
        System.out.println(plaintext + " : " + ciphertext);
    }
}

运行输出结果如下:

root : azL9Cyp9H62r3eUgZ+TESw==

再次,接下来我们看看如何解密:

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
 
/**
 *把密文放到配置文件中的时候要注意:
 * ENC(密文)
 * @author LeeYoung
 */
public class ConfigEncryptUtils {
    public static void main(String[] args){
        //加密工具
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm("PBEWithMD5AndDES");
        //自己在用的时候更改此密码
        config.setPassword("apdplat");
        //应用配置
        encryptor.setConfig(config);
        String ciphertext="azL9Cyp9H62r3eUgZ+TESw==";
        //解密
        String plaintext=encryptor.decrypt(ciphertext);
        System.out.println(ciphertext + " : " + plaintext);
    }
}

运行输出结果如下:

azL9Cyp9H62r3eUgZ+TESw== : root

从上面我们可以看到,加密和解密的代码的唯一差别是encrypt和decrypt。

最后我们来看看如何和spring集成,在spring配置文件中加入如下配置,这样当spring读取到的值是加过密的值就会自动解密,那么spring是如何判断一个值是否加密过了呢?是根据特定的前缀ENC(和后缀)来判断的。



    
    
    
    
        
            classpath:/org/apdplat/config.properties
            classpath:config.local.properties
            classpath:/org/apdplat/db.properties
            classpath:db.local.properties
        
    

 

    

 

    
    

配置好spring后,我们就可以在指定的配置文件classpath:config.local.properties中使用加密过后的数据库连接使用的用户名和密码了,别忘了特定的前缀ENC(和后缀)哦:

#数据库配置文件
 
#mysql
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/${module.short.name}?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true&autoReconnect=true
db.username=ENC(qPWWR8YEmQE63EYywEBKaQ==)
db.password=ENC(qPWWR8YEmQE63EYywEBKaQ==)
jpa.database=MYSQL
db.backup.command=mysqldump  -u${db.username} -p${db.password} ${module.short.name}
db.restore.command=mysql -u${db.username} -p${db.password} ${module.short.name}

 

你可能感兴趣的:(笔记)