配置⽂件的属性ENC加密
转载:
在micro service体系中,有了config server,我们可以把配置存放在git、svn、数据库等,普通的web项⽬也基本上是把配置存放在配置⽂件中。如果我们把⼤量的配置信息都放在配置⽂件中是会有安全隐患的,那么如何消除这个隐患呢?最直接的⽅式就是把配置信息中的⼀些敏感信息(⽐如数据库密码、中间件密码)加密,然后程序在获取这些配置的时候解密,就可以达到⽬的。这个时候,框架就派上⽤场了。
Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.
springboot其实就是spring
High-security, standards-based encryption techniques, both for unidirectional and bidirectional encryption. Encrypt
passwords, texts, numbers,
Transparent integration with Hibernate.
Suitable for integration into Spring-based applications and also transparently integrable with Spring Security.
Integrated capabilities for encrypting the configuration of applications (i.e. datasources).
Specific features for high-performance encryption in multi-processor/multi-core systems.
Open API for use with any JCE provider.
意思其实就是可以把Jasypt这个Java库当成是⼀个⿊盒⼦,⽆需深⼊了解⾥⾯怎么运作的,可以拿来直接⽤(当然,作为码农我们还是要去⼀探究竟的,个⼈兴趣⾃⼰看吧)。现在基本上项⽬都集成spring boot了,因此我们可以使⽤。
1. 引⼊pom包
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2. 到maven仓库中的 jasypt-1.9.2.jar(路径是:.m2\repository\org\jasypt\jasypt\1.9.2)
3. 调⽤jasypt-1.9.2.jar包中⼀个main⽅法:org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI ,源码参考:
View Code
然后执⾏⼀下语句:
java -cp jasypt-1.9.2.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="test" password=salt algorithm=PBEWithMD5AndDES
-- input参数:你想要加密的密码
-- password参数:jasypt⽤来加密你的密码的密码
结果如下图,途中的output就是加密后的密⽂了。
4. 修改配置⽂件,把配置⽂件中要加密的字段改为:ENC(密⽂)
system:
mysql:
url:
username: username
password: ENC(qh8kixDUkvm1DIJrpLFtzw==) jasypt:
encryptor:
password: salt
以上就可以达到⽬的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。