Java知识点整理正在进行中,关注我,持续给您带来简单,实用的Java编程技巧。
jasypt是Java中一个用来加密解密的框架。
在实际的项目开发中,程序配置文件中的有些信息实际上是比较敏感的,比如数据库的用户名和密码,直接以明文的方式写在配置文件中会有一定的风险。这时就可以通过jasypt对敏感信息进行加密,达到保护敏感信息的目的。
这里介绍下SpringBoot整合jasypt实现加解密的方法。
步骤:
- 引入jasypt依赖
- 在SpringBoot配置文件中设置jasypt的加密密钥
- 通过代码获得加密后的密文
- 将密文添加到SpringBoot配置文件中
引入jasypt依赖
<!-- 引入jasypt --><dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version></dependency>
在SpringBoot配置文件中设置jasypt的加密密钥Afei@2018
jasypt: encryptor: password: Afei@2018
获得密文的方法,密钥需要和配置文件里的一致
package com.bbzd.mws.util;import org.jasypt.util.text.AES256TextEncryptor;import org.jasypt.util.text.BasicTextEncryptor;import org.jasypt.util.text.StrongTextEncryptor;/** * @author Wangjzh * @date 2022/10/19 - 21:48 */public class EncryptUtil { public static void main(String[] args) { AES256TextEncryptor basicTextEncryptor = new AES256TextEncryptor(); //设置密钥 basicTextEncryptor.setPassword("Afei@2018"); //encryptString是加密后的密文 String encryptString=basicTextEncryptor.encrypt("root"); System.out.println("encryptString:"+encryptString); //planString是解密后的明文 String planString=basicTextEncryptor.decrypt(encryptString); System.out.println("planString:"+planString); }}
密文放在ENC()中说明是密文,系统会在使用时自动转为明文
spring: datasource: one: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/706lmes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false username: ENC(ri1wFv4s5cXv/Ppn7VXIMKaAkjkE1TNHLuozzOU05awcw0+L8MAH2/KUv1VkVppt) password: ENC(mQbBjZdGegOm3B8Y+9O9oVM1a0dkzoUIhHKiJcGvMdGveu9CbLiWV/g5yjeN1MqB) type: com.alibaba.druid.pool.DruidDataSource druid: filter: config: enabled: true two: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/706lmes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false username: ENC(ri1wFv4s5cXv/Ppn7VXIMKaAkjkE1TNHLuozzOU05awcw0+L8MAH2/KUv1VkVppt) password: ENC(mQbBjZdGegOm3B8Y+9O9oVM1a0dkzoUIhHKiJcGvMdGveu9CbLiWV/g5yjeN1MqB) type: com.alibaba.druid.pool.DruidDataSource druid: filter: config: enabled: true
总结:
- jasypt使用起来非常方便,对原来配置文件的修改就是将密文包含在ENC()内
- 加密密钥放在配置文件里是为了开发调试方便,在实际部署时,可以去掉SpringBoot配置文件里的密钥,通过启动参数来将密钥传递到程序中:java -jar -Djasypt.encryptor.password=Afei@2018 server-0.0.1-SNAPSHOT.jar
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除