当前位置:   article > 正文

SpringBoot集成Jasypt 对配置文件加密(明文加密)_springboot整合jasypt对配置文件加密

springboot整合jasypt对配置文件加密

Jasypt简介:

官网: http://www.jasypt.org/index.html

Jasypt 是一个 java 库,它允许开发人员以最小的努力将基本的加密功能添加到他/她的项目中,而无需深入了解密码学的工作原理。
· 高安全性、基于标准的加密技术,适用于单向和双向加密。加密密码、文本、数字、二进制文件…
· 适合集成到基于Spring的应用程序中,也可以与Spring Security透明地集成。
· 用于加密应用程序(即数据源)配置的集成功能
· 多处理器/多核系统中高性能加密的特定功能。

与springboot集成

1.、引入jar包:

–这里以3.0.3版本,对应的jasypt版本 1.9.3

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

2、 生成加密数据字符串:

这里介绍两种:
· 命令行
· java代码

2.1 命令行加密

进入到本地jar 包仓库,使用cmd 或者 git bash 工具

加密:

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=pkslow algorithm=PBEWithMD5AndTripleDES input=password
  • 1

解密:

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI p                                                  assword=salt algorithm=PBEWithMD5AndTripleDES input=yZ+fSk2aKpbveRDOGHbIRzPVX5AT                                                  601v
  • 1

加解密就只是方法名称不同:
在这里插入图片描述
示例:
示例:

2.2 java 代码
    @Test
    public void jasyptTest() {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();
        //config.setAlgorithm 设置加密方式
        config.setAlgorithm("PBEWithMD5AndTripleDES");
        //config.setPassword 设置密钥
        config.setPassword("salt");
        standardPBEStringEncryptor.setConfig(config);
        //设置明文密码
        String input = "123456";
        //encrypt是加密方法,decrypt是解密方法
        String encryptedText = standardPBEStringEncryptor.encrypt(input);
        log.info("加密结果: " + encryptedText);
        log.info("解密结果: " + standardPBEStringEncryptor.decrypt(encryptedText));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3、 配置文件中使用

只需要使用默认的前缀 ENC()包裹,括号内就是加密后的字符

url: jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ENC(yZ+fSk2aKpbveRDOGHbIRzPVX5AT                                                  601v)
  • 1
  • 2
  • 3
  • 4

4、关于Jasypt敏感配置存放位置(盐值、算法等)

4.1 yml或properties文件中 (简单但不安全)
jasypt:
    encryptor:
        password: salt
  • 1
  • 2
  • 3
4.2 代码内配置
    @Bean("jasyptStringEncryptor")
    public StringEncryptor stringEncryptor1() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("d947a954-salt");
        config.setAlgorithm("PBEWithMD5AndTripleDES");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize(Runtime.getRuntime().availableProcessors());
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
4.3 JVM参数方式
# 项目启动时,带入以下参数
-Djasypt.encryptor.password=salt
  • 1
  • 2

-END

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/945688
推荐阅读
相关标签
  

闽ICP备14008679号