当前位置: 首页 > news >正文

Springboot整合Jasypt实战

Springboot整合Jasypt实战

  • 引入依赖

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

    # 配置jasypt相关信息
    jasypt:encryptor:# 配置加密算法algorithm: PBEWithMD5AndDES# 加密使用的秘钥(秘钥不建议出现在配置文件中)password: jaspyt_passwordproperty:# 算法识别前缀(当算法发现配置文件中的值以这前缀开始,后缀结尾时,会使用指定算法解密)prefix: ENC(# 算法识别后缀suffix: )
    
  • 使用jasypt生成密文

    @SpringBootTest
    public class JasyptTest {@Autowiredprivate StringEncryptor stringEncryptor;@Testpublic void jasyptTest(){System.out.println("root加密:" + stringEncryptor.encrypt("root"));System.out.println("密码加密:" + stringEncryptor.encrypt("xxx"));}
    }
    

在这里插入图片描述

  • 将数据库连接信息中的明文进行替换

    spring:datasource:#数据库信息username: ENC(7oFPCjLkJLw53LbghzgLXnTb6ASsEYrqDNCNsYe/r/ztvTwFBAQlc+InWS4/rC1S)password: ENC(z5L9s3/deJ/CYu9NWU7vTAEpb3GW9qB3H7T2nAnqDiityOrwEL7nXtT51VX0b0q8)url: jdbc:mysql://127.0.0.1:3306/jasyptTest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8driver-class-name: com.mysql.cj.jdbc.Driver
    

但是一般不将秘钥写入配置文件,写入配置文件也会产生一些安全问题

加密秘钥存储

方式一:将秘钥作为程序启动的命令行参数
java -jar xxx.jar --jasypt.encryptor.password=秘钥
方式二:将秘钥作为程序启动时的环境变量
java -Djasypt.encryptor.password=秘钥 -jar xxx.jar
方式三:自定义加密解密逻辑
  • 自定义加密解密类

    import org.jasypt.encryption.StringEncryptor;
    import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
    import org.jasypt.encryption.pbe.config.PBEConfig;
    import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;/*** 自定义加密*/
    @Configuration
    public class EncryptionConfig {@Bean("jasyptStringEncryptor")public StringEncryptor stringEncryptor() {DESEncrypt desEncrypt = new DESEncrypt();return desEncrypt;}public class DESEncrypt implements StringEncryptor {/*** SimpleStringPBEConfig是Jasypt中的一个实现类,用于配置PBE算法的参数。* 它提供了一些方法,可以设置密码、密钥迭代次数、算法、盐和IV生成器等。您可以使用它来配置PBE算法的参数,* 以便与StringEncryptor一起使用。* @return*/private PBEConfig config(){SimpleStringPBEConfig config = new SimpleStringPBEConfig();//设置秘钥config.setPassword("jaspyt_password");//设置加密算法config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");//这行代码设置了PBE加密算法从密码中推导密钥的迭代次数。config.setKeyObtentionIterations("1000");config.setPoolSize("1");config.setProviderName("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");config.setStringOutputType("base64");return config;}/*** 加密* @param s* @return*/@Overridepublic String encrypt(String s) {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(config());return encryptor.encrypt(s);}/*** 解密* @param s* @return*/@Overridepublic String decrypt(String s) {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(config());return encryptor.decrypt(s);}}
    }
    
http://www.lryc.cn/news/64958.html

相关文章:

  • 计算机网络笔记:DNS域名解析过程
  • C语言函数大全-- s 开头的函数(4)
  • Linux常见指令 (2)
  • shell脚本4
  • 递归思路讲解
  • 基于R语言APSIM模型高级应用及批量模拟
  • Hyperf中的其它事项
  • 【技术选型】Elasticsearch 和Solr那个香?
  • 4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....
  • 数据恢复软件EasyRecovery16下载安装步骤教程
  • Springboot 自定义缓存配置 CacheManager 及redis集成
  • JS 中七个改变原数组的方法
  • 【笔试强训选择题】Day7.习题(错题)解析
  • Vue电商项目--axios二次封装
  • 人生四维度
  • Python 调用 MessageBeep 播放系统音效
  • 废物,我TMD一个985却斗不过专科生(大厂自动化测试2年被裁)
  • p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
  • 第三十二章 Unity Mecanim动画系统(上)
  • 第二章 集合
  • 这一篇Databinding应该可以帮助迅速上手吧
  • 【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制
  • cout源码浅析
  • 发送Ajax get请求详解
  • SQL语句
  • Mysql 学习(八)单表查询方法二
  • 安卓系统下的截屏和录屏
  • 行为型模式-中介者模式
  • 辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-功能ODD定义
  • PMP/高项 06-项目成本管理