首页 > 其他分享 >使用jasypt对springboot配置信息加密

使用jasypt对springboot配置信息加密

时间:2023-11-23 15:14:02浏览次数:24  
标签:加密 springboot jasypt encryptor org config PooledPBEStringEncryptor

1.pom文件增加依赖

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

2.修改启动类增加StringEncryptor实现

jasypt密码可以放到配置文件或者启动命令中,与其这样不如直接写到代码里


    @Primary
    @Bean("jasyptStringEncryptor")
    public StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("xxxx");//这里改成你的密码
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }

注意:上面的@Primary 注解必须加上,覆盖默认实现。

3.本地写一个加密类,对你要加密的敏感信息加密

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

public class JasyptTest {

	public static void main(String[] args) {
		PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("xxxx");//改成你的密码
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        
        String originStr = "xxxx" ;//原始字符串
        String encStr = encryptor.encrypt(originStr);
        System.out.println("originStr encrypt is {}"+ encStr);//加密后的字符串,这个贴到配置文件中
        System.out.println("originStr is {}"+ encryptor.decrypt(encStr));//验证一下解密

	}

}

4.修改配置文件

将加密后的信息用前面用 ENC( ) 包起来

例如:

原始配置:

spring.datascoure.password=yourpassword

改成:

spring.datascoure.password=ENC(JL2t1CZpj+cTQ30IFKu0lkoZCVpYbVIhLm1MRbBpaNI])

(完)

参考:

[1] https://zhuanlan.zhihu.com/p/480828512

[2] https://github.com/ulisesbocchio/jasypt-spring-boot

source: https://wangxuan.me/tech/2023/11/23/use-jasypt-to-encrypt-configs.html

标签:加密,springboot,jasypt,encryptor,org,config,PooledPBEStringEncryptor
From: https://www.cnblogs.com/wang1dao/p/17851566.html

相关文章

  • 手把手教你玩转 SpringBoot 日志
    本文根据文章:https://lebron.blog.csdn.net/article/details/132953586?spm=1001.2014.3001.5502进行修改一、日志重要吗程序中的日志重要吗?在回答这个问题前,笔者先说个事例:笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤......
  • Misc_BUUCTF_WriteUp | zip 伪加密
    题目(一个zip文件分析果不其然,打开压缩包需要密码:了解了一下zip伪加密后,用010Editor打开压缩包,发现压缩源文件数据区和目录区中全局方式位标记的第二个比特位均为奇数9(问号脸.jpg)尝试分别修改两个全局方式位标记为00后查看情况。将文件重命名为unlock0......
  • 基于java+springboot的酒店预定网站、酒店客房管理系统
    该系统是基于Java的酒店客房预订系统设计与实现。是给师弟开发的毕业设计。现将源代码开放出来,感兴趣的同学可以下载。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123功能介绍平台采用B/S结构,后端采用主......
  • springboot多文件上传代码实例及解析
    这篇文章主要介绍了springboot多文件上传代码实例及解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一说明spingMVC支持文件上传,我们通过Apach的commons-fileupload包的CommonsMultipartResolver去实现了spingMVC的Mu......
  • SpringBoot注入时设置《多例》
    SpringBoot设置多例1、准备数据测试接口packagecom.cc.jschdemo.springmultiton;/***<p>spring多例测试</p>**@author--*@since2023/11/23*/publicinterfaceISpringMultiton{}测试接口实现(注入spring)packagecom.cc.jschdemo.springmultiton;i......
  • Springboot全局异常处理
    自定义异常枚举类枚举类用于定义自定义的异常类型,对应自定义错误码,错误信息,状态码publicenumErrorCodeEnum{USERINFO_EXCEPTION(10001,HttpStatus.INTERNAL_SERVER_ERROR,"UserInfoException"),AUTHORIZATION_EXCEPTION(10002,HttpStatus.UNAUTHORIZED,"Authoriza......
  • 使用SpringBoot实现文件的上传
    使用SpringBoot实现文件的上传springboot可以直接使用org.springframework.web.multipart.MultipartFile所以非常容易实现一、首先是简单的单文件上传先在index.html页面下写一个简单的form表单<h1>单文件</h1><formclass="form-signin"th:action="@{/SingleFile/upload}"......
  • SHA加密解密
    一、概述SHA(SecureHashAlgorithm,安全哈希算法)是一类广泛应用于加密领域的算法,主要用于数据完整性校验和加密认证。SHA算法首次出现在1993年,由美国国家安全局(NSA)研发,并于2001年发布SHA-2系列算法,包括SHA-224、SHA-256、SHA-384和SHA-512。此后,SHA-2系列算法逐渐成为网络安全领域的......
  • springboot如何监控各种指标?
    以springboot2.7.17为例: 1:新增如下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 然后,在你的配置文件(如 application.properties)中添加以下配......
  • SHA加密解密
    一、概述SHA(SecureHashAlgorithm,安全哈希算法)是一类广泛应用于加密领域的算法,主要用于数据完整性校验和加密认证。SHA算法首次出现在1993年,由美国国家安全局(NSA)研发,并于2001年发布SHA-2系列算法,包括SHA-224、SHA-256、SHA-384和SHA-512。此后,SHA-2系列算法逐渐成为网络安全领域......