当前位置: 代码网 > it编程>编程语言>Java > SpringBoot使用除了Jasypt对YML文件配置内容进行加密方式

SpringBoot使用除了Jasypt对YML文件配置内容进行加密方式

2025年11月25日 Java 我要评论
1. 在pom.xml中添加jasypt依赖 <dependency> <groupid>com.github.ulisesbocchio</

1. 在pom.xml中添加jasypt依赖

     <dependency>
           <groupid>com.github.ulisesbocchio</groupid>
           <artifactid>jasypt-spring-boot-starter</artifactid>
           <version>3.0.4</version>
      </dependency>>

2. 加密算法

      // 1. 创建对象
      pooledpbestringencryptor encryptor = new pooledpbestringencryptor();
      // 2. 加密配置
      simplestringpbeconfig config = new simplestringpbeconfig();
      // 秘钥
      config.setpassword("your-secret-key");
      // 3. 加密算法,需要与解密算法一致
      config.setalgorithm("pbewithmd5anddes");
      // 为减少配置文件的书写,以下都是 jasyp 3.x 版本,配置文件默认配置
      config.setkeyobtentioniterations( "1000");
      config.setpoolsize("1");
      config.setprovidername("jc");
      config.setsaltgeneratorclassname("org.jasypt.salt.randomsaltgenerator");
      config.setivgeneratorclassname("org.jasypt.iv.noivgenerator");
      config.setstringoutputtype("base64");
      encryptor.setconfig(config);
      //需要加密的字符串
      system.out.println( encryptor.encrypt("需加密的字符串"));

加密后的字符串


3. 在application.yml中配置加密相关信息

使用enc(加密字符串)

	url: jdbc:mysql://ip:port/test
	username: root
	password: enc(w8bh76qyhsgduxbwk0hsgpbmwzzmoxyvo0dvkopsiy4=)

4. 配置的两种方式

配置解密bean并注入(硬编码) 或 在yml配置jasypt(推荐)

4.1.1 配置bean

@configuration
@enableencryptableproperties
public class customencryptconfig {
    @bean(name = "customstringencryptor")
    public  static stringencryptor stringencryptor() {
        pooledpbestringencryptor encryptor = new pooledpbestringencryptor();
        // 2. 加解密配置
        simplestringpbeconfig config = new simplestringpbeconfig();
        config.setpassword("your-secret-key");
        // 3. 解密算法,必须与加密算法一致
        config.setalgorithm("pbewithmd5anddes");
        // 为减少配置文件的书写,以下都是 jasyp 3.x 版本,配置文件默认配置
        config.setkeyobtentioniterations( "1000");
        config.setpoolsize("1");
        config.setprovidername("jc");
        config.setsaltgeneratorclassname("org.jasypt.salt.randomsaltgenerator");
        config.setivgeneratorclassname("org.jasypt.iv.noivgenerator");
        config.setstringoutputtype("base64");
        encryptor.setconfig(config);
        return encryptor;
    }
}

4.1.2 启动类中配置 jasypt.encryptor.bean

customstringencryptor为上一步配置的bean

@springbootapplication
public class springboottestapplication
{
    public static void main(string[] args)
    {
        system.setproperty("jasypt.encryptor.bean", "customstringencryptor");
        springapplication.run(snskapplication.class, args);
    }
}

4.2.1 启动类中配置 jasypt.encryptor.bean

customstringencryptor为上一步配置的bean

jasypt:
  encryptor:
    algorithm: pbewithmd5anddes //pbewithhmacsha512andaes_256更安全
    iv-generator-classname: org.jasypt.iv.noivgenerator
    password: your-secret-key

4.2.2 配置服务器运行参数

java -xms256m -xmx256m -jar / java/app.jar --jasypt.encryptor.password=xxxxx

但是如果我们配置了password值,就需要在启动类加上@enableencryptableproperties这个注解,用于自动解密。

5. 注意

代码加密时的秘钥和算法必须和配置的相同

1. 必须和在bean中配置的秘钥和算法 一致对应

2. 必需在yml中的jasypt.encryptor.password 和 jasypt.encryptor.algorithm 一致对应

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com