jasypt加密解密

1. 导入依赖

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

2. yml配置

导入依赖后,就可以进行jasypt的加密配置

# jasypt 配置加密
jasypt:encryptor:# 密码盐值(自定义)password: jasypt# 加密算法设置algorithm: PBEWithMD5AndDESiv-generator-classname: org.jasypt.iv.RandomIvGeneratorsalt-generator-classname: org.jasypt.salt.RandomSaltGenerator

进行完上面操作,就可以在需要加密的地方进行配置了。

比如,配置数据库的账号密码,使用格式ENC(加密后的密码)进行加密。

username: ENC(vyxdS47pJdWBF38TFdmjKmMm4zEO0FQP)
password: ENC(vyxdS47pJdWBF38TFdmjKmMm4zEO0FQP)

但是如何获取这些加密值呢?接下来写一个加密解密的工具类。

3. 加密解密工具类

package com.example.util;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;public class JasyptUtils {/*** 加密* @param password 配置文件中设定的加密盐值* @param value 加密值* @return 加密后的字符串*/public static String encrypt(String password,String value){PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(cryptor(password));return  encryptor.encrypt(value);}/*** 解密* @param password 配置文件中设定的加密盐值* @param value 解密密文* @return 解密后的字符串*/public static String decrypt(String password,String value){PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(cryptor(password));return encryptor.decrypt(value);}/*** 配置,对应yml中的配置* @param password 盐值* @return SimpleStringPBEConfig*/public static SimpleStringPBEConfig cryptor(String password){SimpleStringPBEConfig config = new SimpleStringPBEConfig();//设置盐值config.setPassword(password);//设置算法config.setAlgorithm("PBEWithMD5AndDES");config.setKeyObtentionIterations("1000");config.setPoolSize("1");config.setProviderName("SunJCE");config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setStringOutputType("base64");return config;}public static void main(String[] args) {// 加密String encryptStr = encrypt("jasypt", "root");// 解密String decryptStr = decrypt("jasypt", encryptStr);System.out.println("加密后:" + encryptStr);System.out.println("解密后:" + decryptStr);}
}

在main方法中执行可以得到加密前后的字符串

加密后:b1tEArsy2JkB3h29nD5qs9Kx1qdXYmK8
解密后:root

4. 测试一下

application.yml新加一个配置

hello:port: ENC(wqy7gE7IBhupjgdPI/FuOTwOQ9p1NAIf)

新建一个TestConfig.java来获取yml中的值

package com.example.config;import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;@Configuration
@Data
public class TestConfig {@Value("${hello.port}")private String port;
}

创建测试类测试:

package com.example.jasypt;import com.example.config.TestConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
@SpringBootTest
public class JasyptTests {@Resourceprivate TestConfig testConfig;@Testvoid getPort(){System.out.println("testConfig.getPort() = " + testConfig.getPort());}
}

启动后输出:testConfig.getPort() = root

5.隐藏设置的盐值

那么问题来了,盐值肯定是不能被别人知道的。
去掉配置文件中设置的盐值,并在idea的启动配置项的“VM options”添加-Djasypt.encryptor.password=盐值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-780l4p4S-1656068504206)(E:\要整理的笔记\new\image-20210508111230392.png)]

打包后启动方式:java -jar -Djasypt.encryptor.password=盐值 test.jar

jasypt加密解密相关推荐

  1. jasypt 加密解密+自定义加密算法

    1.引用jar包 gradle: implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter ...

  2. 使用jasypt加密解密

    相关工具版本如下: Spring Boot    2.1.11.RELEASE Gradle            4.8 1.在build.gradle导入Jar implementation 'c ...

  3. SpringBoot使用jasypt加解密密码

    在我们的服务中不可避免的需要使用到一些秘钥(数据库.redis等):使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application ...

  4. Springboot之Jasypt配置文件加密/解密

    Jasypt配置文件加密/机密 一.Jasypt介绍 二.Springboot整合Jasypt 2.1 环境配置 2.2 添加依赖 2.3 添加Jasypt配置 2.4 编写加/解密工具类 2.5 修 ...

  5. java url加密解密,Java加密解密 -Jasypt

    1. download url http://www.jasypt.org/download.html 2. 依赖 jar jasypt-1.9.0.jar 3. 加密 // 默认加密/解密算法是 P ...

  6. 使用Jasypt加密spring boot应用配置文件的敏感信息

    Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理.利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密.加密密码,文本,数字,二进制文件. ...

  7. spring boot使用jasypt加密原理解析

    目录 版本对应的坑 关键技术点 源码解析 将jar包引入到spring boot中 @EnableAutoConfiguration原理 JasyptSpringBootAutoConfigurati ...

  8. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

  9. 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt

    前几天分享了一篇<Spring Boot 2.x基础教程:加密配置中的敏感信息> (https://blog.didispace.com/spring-boot-learning-2-1- ...

最新文章

  1. Python基础(6)_函数
  2. 腾讯敏捷协作平台TAPD获评2019软博会“优秀产品”
  3. 这次使用一个最舒服的姿势插入HttpClient拦截器技能点
  4. 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你
  5. .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)...
  6. Spring项目包变文件夹
  7. spring_装配Bean
  8. php创建图片的缩略图,如何通过php给图片创建缩略图?
  9. word上下的横线怎么去掉_word文档上面有一条横线怎么去掉
  10. 头歌-自己动手画CPU(第五关)-寄存器文件设计-Logisim
  11. golang php mysql性能_golang vs dlang vs nodejs vs php 性能对比较量
  12. OBD系统系族分类规则
  13. 《生物化学与分子生物学》----糖酵解,柠檬酸---听课笔记(十五)
  14. 字节字符流与错误的处理方法
  15. Node Sass找不到您当前环境的绑定
  16. MT60B1G16HC-48B:A美光内存颗粒FBGA代码D8BNK
  17. go如何实现可选参数
  18. 圆周率近似计算公式--python实现
  19. 《中国哲学史大纲》读书笔记
  20. 长铗:搭积木无法建筑DeFi摩天楼,Bytom用工程思维构建MOV宇宙

热门文章

  1. Ribbon源码3-负载均衡算法源码分析
  2. 斯坦福cs224d(深度学习在自然语言处理上的应用)Lecture 2
  3. 绿色卡通风格PSD登录模板
  4. 英雄不问出处, 看看商界大佬年轻时受过的苦
  5. PoE供电、集中供电、点对点供电各自的优缺点
  6. Tips 兼容iOS7的几个坑
  7. 2022_WSDM_Contrastive Meta Learning with Behavior Multiplicity for Recommendation
  8. python画地球仪_如何选择纬度和经度在地球仪上形成一个“矩形”?
  9. 呼叫中心系统语音质检功能的应用
  10. 柔宇六周年庆2000人齐聚,揭开“柔性星球”面纱