一、jasypt-spring-boot-starter的使用方式

1、pom.xml增加依赖

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

2、yml增加配置

jasypt:
  encryptor:
    algorithm: PBEWithMD5AndDES
    iv-generator-classname: org.jasypt.iv.NoIvGenerator

3、使用秘钥和密码明文生成密码
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=待加密内容 password=加密秘钥 algorithm=PBEWithMD5AndDES
 

 4、检查生成的密码是否正确
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=加密后内容 password=加密秘钥 algorithm=PBEWithMD5AndDES

5、密文使用
使用ENC(密文)的方式替换原配置中的明文参数,支持nacos配置中心,yml等多种配置文件

6、项目启动参数设置
项目启动参数增加【-Djasypt.encryptor.password=秘钥】 来实现密文解密    

7、其它

关于加密结果,每次加密的结果都不一样,但使用秘钥都能得到正确的明文

注意加解密一定需要使用jasypt-spring-boot-starter中引用的jasypt-x.x.x.jar 对应版本,否则可能导致密文无法解析的情况


二、jasypt-spring-boot-starter的运行原理

1、jasypt的加密方式
jasypt采用PBEWithMD5AndDES加密方式,在相同的秘钥情况下,每次生成的密文都不相同,但可以使用秘钥解密获得相同的明文,可以确保秘钥的安全

2、 jasypt-spring-boot-starter的运行原理
先使用原先的配置加载方式加载配置信息(因此系统使用何种配置方式,对加解密没有影响),再通过代理的方式代理了配置获取类,在Bean生成时加载配置的地方使用代理类执行密码转换获得明文

3 、jasypt-spring-boot-starter工作原理
在spring中的加载方式:

EnableEncryptablePropertiesConfiguration 类负责配置文件加载
将当前的environment环境配置进行代理或包装(返回EnableEncryptablePropertiesBeanFactoryPostProcessor)
对所有的参数值使用Encryptable进行代理,生成PropertySource的AOP代理类
并使用EncryptableMapPropertySourceWrapper类来包装PropertySource
使用的时候通过DefaultPropertyDetector来判断数据是否符合ENC(**********)这样的数据结构
符合时,使用EncryptablePropertyResolver来解码数据

文章仅作为个人学习整理

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐