这里主要介绍在SpringBoot下使用jasypt加密用户数据库连接密码。

一、在pom.xml添加jasypt

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>${Jasypt.version}</version>
</dependency>

二、配置文件中配置加密参数

jasypt:
  encryptor:
    password: zr

三、在测试方法中测试

@Autowired
StringEncryptor stringEncryptor;
@Test
public void encryptPwd() {
    String result = stringEncryptor.encrypt("yourpassword");
    System.out.println("==================");
    System.out.println(result);
    System.out.println("==================");
}

四、配置数据源

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/vue?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    # Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果)
    password: ENC(************************)
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver

五、工具类

public class JasyptUtil {

    /**
     * Jasypt生成加密结果
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value 待加密值
     * @return
     */
    public static String encyptPwd(String password,String value){
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        encryptor.setConfig(cryptor(password));
        String result = encryptor.encrypt(value);
        return result;
    }

    /**
     * 解密
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value 待解密密文
     * @return
     */
    public static String decyptPwd(String password,String value){
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        encryptor.setConfig(cryptor(password));
        String result = encryptor.decrypt(value);
        return result;
    }

    public static SimpleStringPBEConfig cryptor(String password){
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        return config;
    }
}

六、使用命令行直接加密解密

1、在jar包所在目录打开命令行,运行如下加密命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=security algorithm=PBEWithMD5AndDES

运行结果如下:

----ENVIRONMENT-----------------
 
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.91-b14 
 
----ARGUMENTS-------------------
 
algorithm: PBEWithMD5AndDES
input: root
password: security
 
----OUTPUT----------------------
 
i00VogiiZ1FpZR9McY7XNw==

2、使用上一步加密结果进行解密

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="i00VogiiZ1FpZR9McY7XNw==" password=security algorithm=PBEWithMD5AndD

运行结果如下:

----ENVIRONMENT-----------------
 
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.91-b14 
 
----ARGUMENTS-------------------
 
algorithm: PBEWithMD5AndDES
input: i00VogiiZ1FpZR9McY7XNw==
password: security
 
----OUTPUT----------------------
 
root


你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您好,欢迎到访网站!
  查看权限

«   2018年9月   »
12
3456789
10111213141516
17181920212223
24252627282930

最新留言