1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SpringBoot-加密组件jasypt-spring-boot-starter

SpringBoot-加密组件jasypt-spring-boot-starter

时间:2019-12-25 15:02:51

相关推荐

SpringBoot-加密组件jasypt-spring-boot-starter

一、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: PBEWithMD5AndDESiv-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来解码数据

文章仅作为个人学习整理

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。