Jasypt Spring Boot提供了Spring Boot应用程序配置文件的加密。有下面3种方式在项目中集成jasypt-spring-boot:

1. 在classpath中添加jasypt-spring-boot-starter的jar包(maven添加对应的依赖),使用@SpringBootApplication及@EnableAutoConfiguration使得整个Spring环境中的配置文件都进行加密。

2. 在classpath中添加jasypt-spring-boot的jar包,在主配置类中添加@EnableEncryptableProperties注解。

3. classpath中添加jasypt-spring-boot的依赖为特定的配置文件进行加密使用@EncrytablePropertySource。

加密时提供一个密钥,然后进行加密。如下实例代码:

public class MyTest {/*** 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;}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("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setStringOutputType("base64");return config;}public static void main(String[] args) {// 加密String enc = encryptPwd("123456", "Hello world");System.out.println(enc);// 解密System.out.println(decyptPwd("123456", enc));}}

程序运行截图如下:

在真实开发中,通常把这个密钥设置为环境变量(特定的用户才能跑此程序)。

然后在spring boot中设置application.properties

jasypt.encryptor.password=${HelloWordSalt}

Spring Boot中application.properties使用${变量}来获取环境变量。

这里跑的时候可以看到:

剩下的配置都jasypt都只采用默认的形式。

在实际开发中,可以写一个加密生成工具:

通过生成工具去加密及解密。

Java工作笔记-Spring boot中配置文件加密(Jasypt的使用)相关推荐

  1. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库

    这里以达梦数据库为例,使用MyBatis对数据库进行增删改查 这里先给出截图 此处为了简单,直接在Controller里面调用dao中数据: 关键代码如下: application.propertie ...

  2. Java工作笔记-Spring Boot + Jdbc + dm7Driver访问数据库(Spring Boot连接达梦数据库)

    目录 基本概念 代码与实例 基本概念 Jdbc有4种方式访问数据库,下面给出达梦访问数据库的方式. 安装好达梦库后,就会有驱动,在此不再说明怎么去安装! 本次使用Java7的环境,所以使用的Jar包为 ...

  3. Java工作笔记-Spring Boot封装Jedis实例

    目录 基本概念 代码与实例 源码下载 基本概念 SpringBoot提供了一套Redis接口,但个人感觉没Jedis方便(可能是因为本人比较菜的原因吧) 在此封装了相爱Jedis,在部署的时候,同样可 ...

  4. Java工作笔记-Spring Boot上传图片并显示

    目录 基本概念 代码与实例 源码打包下载 基本概念 这个是基因Github的一个项目改的,因为页面关闭了,在此找不到了,不能把连接发上来. 这里使用的是FreeMarker. 为了避免重名,使用了UU ...

  5. java mapper control_java spring boot中怎么编写mapper?怎么编写service和controller?

    上次已经为大家介绍过java spring boot中怎么加入依赖的主要内容了.今天再为大家介绍一些与之相关的内容,也就是java spring boot中怎么 编写mapper以及怎么编写servi ...

  6. Spring Boot 中密码加密的两种姿势!

    先说一句:密码是无法解密的.大家也不要再问松哥微人事项目中的密码怎么解密了! 密码无法解密,还是为了确保系统安全.今天松哥就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全. 本文是 ...

  7. Java笔记-Spring Boot中Spring WS WS-Addressing中@Action实例

    此笔记为利用Spring WS的WS-Addressing发送SOAP请求及接收其响应. WS-Addressing(Web服务寻址):传送Web服务端点的引用的数据结构,以及一套能够在特定的消息上关 ...

  8. 【Spring Security】解答Spring Boot 中密码加密的正确方式?

    Spring Boot 项目中密码如何加密 先说一句:密码是采用非对称加密是无法解密的.密码无法解密,还是为了确保系统安全.今天就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全.密 ...

  9. Spring Boot中配置文件application.properties使用

    转载自 https://www.cnblogs.com/gczr/p/6692054.html 一.配置文档配置项的调用 启动后在浏览器直接输入http://localhost:18080/user/ ...

最新文章

  1. 2019-4-25 html学习笔记
  2. Xamarin Essentials教程安全存储SecureStorage
  3. Office无法打开超链接地址问题
  4. 几何基础之判断线段相交问题
  5. 讲师两年升“教授”,成功实现“三连跳”
  6. angularjs--resource
  7. python编程输入,Python编程:输入变量返回nam
  8. mysql最大述_MySQL优化(1):Mysql简述
  9. Thinking in Java 17.8 理解Map
  10. 将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
  11. 输入一个三位数,分别输出他的个位十位百位
  12. 编辑器 UEditor 百度富文本web编辑器
  13. 短视频去水印威信小程序源码下载,内附去水印解析接口
  14. Oracle Audit
  15. 开机后黑屏看不到桌面_开机不显示桌面黑屏怎么办_win10开机黑屏啥也没有的解决办法...
  16. c/c++ 实现推箱子小游戏
  17. laravel+redis通过api简单实现微博登陆注册关注取消关注发布信息等
  18. C文件编译生产exe可执行文件
  19. 【CC2530的点对点无线通讯开发(包含BasicRf协议栈、双击、长按、呼吸灯、跑马灯)】
  20. java实现点歌操作_Java中linked list集合实现KTV点歌台功能

热门文章

  1. Java前端技术学习
  2. 如何开发ORACLE存储过程
  3. 程序员加班一般是有原因的,但是有些程序员却表示:我是自愿的!
  4. 被定制化开发坑惨了的IT人,不是所有的报表都能满足老板的需求
  5. 企业即时通讯设计理念及实现代码
  6. 给缺少Python项目实战经验的人,赶紧收藏!
  7. 程序员 挣钱比健康重要
  8. 请假一天,回粤西老家买了套房
  9. SQLite | Join 语句
  10. NAR:脑疾病研究的“金牌助手”:BrainBase