美文网首页黑客安全
Pig4Cloud之jasypt 配置文件加密

Pig4Cloud之jasypt 配置文件加密

作者: 一觉睡到丶小时候 | 来源:发表于2022-12-09 16:00 被阅读0次

    简介

    Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。

    引入Jasypt依赖

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>2.1.0</version>
    </dependency>
    

    配置使用

    将加密后的配置信息使用ENC函数,添加到配置文件中,应用启动加载配置文件时,会自动解密。
    Jasypt默认使用的算法为PBEWithMD5AndDES,该算法需要一个加密密钥,可以在应用启动时指定。也可以直接写入配置文件,安全性稍差。

    jasypt:
      encryptor:
        password: password
    

    注意:这里指定加密密钥为password

    工具类

    package com.keafmd.springdemo.utils;
     
    import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
    import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
    import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
    
    public class JasyptUtils {
        /**
         * Jasypt生成加密结果
         *
         * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
         * @param value    待加密值
         * @return
         */
        public static String encryptPwd(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;
        }
     
        /**
         * @param password salt
         * @return
         */
        public static SimpleStringPBEConfig cryptOr(String password) {
            SimpleStringPBEConfig config = new SimpleStringPBEConfig();
            config.setPassword(password);
            config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
            config.setKeyObtentionIterations("1000");
            config.setPoolSize("1");
            config.setProviderName(null);
            config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
            config.setStringOutputType("base64");
            return config;
        }
     
        public static void main(String[] args) {
            // 加密
            // 盐值替换成自己熟悉的口令,此口令为解密密钥,需要妥善保管。
            // 盐值也需要在第三步写入配置文件
            System.out.println(encryptPwd("keafmd", "123456"));
        }
    }
    

    修改配置文件

    把明文密码替换为工具类生成的密文,并用ENC()包着

    datasource:
      master:
        url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
        username: root
        password: ENC(r7PD0+haO/ALC+txojmG/A==)
        driver-class-name: com.mysql.cj.jdbc.Driver
    

    CSDN
    腾讯云
    掘金
    博客园

    相关文章

      网友评论

        本文标题:Pig4Cloud之jasypt 配置文件加密

        本文链接:https://www.haomeiwen.com/subject/hkdafdtx.html