在我们日常开发项目的过程中,配置信息中需要用到很多用户名密码(例如数据库、redis、邮箱等),这些都是敏感信息,通常我们都是进行加密处理,而jasypt是一个通用的加解密库,在spring boot 项目中使用方便。
下面以3.0.3版本为基础,结合自己的理解,简单说下项目中如何使用 以及jasypt提供了哪几种加密算法
1.依赖引用
maven:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
gradle:
implementation "com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3"
-
jasypt 添加加密信息
(1)配置文件添加(idea工具下,其他工具类似)
(2)yml中添加配置文件
jasypt: encryptor: # 盐加密 password: 自定义
备注:加密设置不至这些还有很多属性可以自定义:例如加密方式等
具体可以去源码中 JasyptEncryptorConfigurationProperties 类中去查看,例如,默认加密方式为如下,自己可以进行自定义加密方式,关于PEB加密方式,可以参考这位老师的帖子:https://blog.csdn.net/ydonghao2/article/details/11038777
3.加密解密实现
(一般加密解密方法只在使用的时候加载即可,不会跟随项目打包)一般项目都是放在test中,还有一种直接声明new BasicTextEncryptor()的方式,自己暂时没有验证过,后续补充
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class JasyptController {
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void encryption() {
String dataName = stringEncryptor.encrypt("test");
System.out.println("dataName:" + dataName);
}
@Test
public void decryption() {
String mailPwd = stringEncryptor.decrypt("uF5twcMmfdyBK/WGAfHiglRjsbjUHwNnvEjTSdH6eKP9oRAFKZxz7AWcMvpbEwTA");
System.out.println("mailPwd:" + mailPwd);
}
}
直接用 StringEncryptor 自带的加密,解密方法已经支持了大多数场景,简单便捷
4.生产环境下由于安全问题 一般将盐作为启动参数进行写入
-Djasypt.encryptor.password = 盐信息
代办:
1.jasypt中还提供了非对称加密算法,后续补充其如何使用
问题:
1.由于项目中使用了bootstrap.yml ,并在其中配置了mybatis日志的输出,但加上jasypt后不打日志了,将配置转移到application.yml后配置生效,需要后续查看加密对配置文件初始化是做了哪些操作,也希望大佬看见能够分享,帮忙解答