惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
V
Visual Studio Blog
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
月光博客
月光博客

tenyon

大美新疆 – tenyon MinIO 迁移 RustFS 工具 粉色天空 Minio 搭建与使用 Python 脚本上传图片到 Minio JRebel 热部署 Session Token JWT 对比 青花 “不是突然好听了,是你有故事了” OBS必改配置调教 中间件常用部署命令 解决静态资源跨域 速览-创作者支持计划 网站字体切片保姆式教程 VirtualBox 安装 Debian 12 详细教程 fontTool制作网站字体 NVM管理Node版本 Halo搭建专属博客 SSH连接GitHub node+express搭建简单服务器 IDEA常用配置
3分钟整合jaspty
本文作者·tenyon 风记得你走过的每个角落 更多资料 · 2023-12-29 · via tenyon

jayspt介绍

jasypt是一个轻量的Java库,它允许开发人员以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理。

省流:轻量,快速,Java库

jasypt特性

1. 提供简单的单向和双向加密

2. 为密码提供一定的安全性

3. 完全的线程安全

4. ...

jasypt应用

引入依赖

(下方有maven地址,建议安装使用人次多的,而不是最新的)

<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
<dependency>

    <groupId>com.github.ulisesbocchio</groupId>

    <artifactId>jasypt-spring-boot-starter</artifactId>

    <version>3.0.5</version>

</dependency>

这里需要注意加密的类型

2.1.2版本默认加密方式为:PBEWithMD5AndDES

3.0.3版本默认加密方式为:PBEWITHHMACSHA512ANDAES_256

yml中配置

可以用下面默认的情况

jasypt:
  encryptor:
  	# password就是盐值
    password: 123123
    # 解密前缀 默认是ENC()
    # prefix: "Y["
    # suffix: "]"

生成密文(测试类中)

@Autowired
    private StringEncryptor stringEncryptor;
    @Test
	void testJayspy() {
    	String username = stringEncryptor.encrypt("root");
    	String password = stringEncryptor.encrypt("password");
    	log.info("username 密文: " + username);
    	log.info("password 密文: " + password);
    }

得到密文配置到yml文件中

yml中敏感数据解密

spring:
  application:
    name: xxx-backend
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/yovvis
    username: ENC(usename 密文)
    password: ENC(password 密文)

两种方法获得正确的明文密码

  1. 保留yml中jasypt配置(虽然可以直接启动项目,但是属于掩耳盗铃,因为密钥暴露在配置里)

  2. 删除jasypt添加虚拟机参数

-Djasypt.encryptor.password="xxxx"

代码提交

提交到仓库,删除盐值提交,然后启动项目可以自行补上盐值

spring:
  application:
    name: xxx-backend
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/yovvis
    username: ENC(usename 密文)
    password: ENC(password 密文)
jasypt:
  encryptor:
  	# password就是盐值