集成Jasypt实现配置项加密

  何为Jasypt

  Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件。

  高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件…

  集成Hibernate的。

  可集成到Spring应用程序中,与Spring Security集成。

  集成的能力,用于加密的应用程序(即数据源)的配置。

  特定功能的高性能加密的multi-processor/multi-core系统。

  与任何JCE提供者使用开放的API

  官网:http://www.jasypt.org/

  SpringBoot集成Jasypt

  SpringBoot中集成Jasypt,可直接使用开源的jasypt-spring-boot直接集成,使用简单方便。

  

mark

  常规集成示例

  0.引入pom依赖

  

  com.github.ulisesbocchio

  jasypt-spring-boot-starter

  1.18

  

  1.设置盐值和修改相应需要加密的配置参数

  # 需要解密的地方,使用ENC()进行包裹处理

  okong.name=ENC(Xj7Ykn2O0Hni/tN4oojPfw==)

  # 设置盐值,生产环境中,切记不要直接进行设置,可通过环境变量、命令行等形式进行设置。

  jasypt.encryptor.password=lqdev

  简单来说,就是在需要加密的值使用ENC(和)进行包裹,即:ENC(密文)。若想避免参数冲突,可修改前缀和后缀,可以直接使用jasypt.encryptor.property.prefix和jasypt.encryptor.property.suffix进行修改即可。

  之后想往常一样使用@Value(${})即可。

  包含xml引入时

  在一些使用javaBean配置和xml两种混合模式时,使用第一种配置时,xml参数并未替换。此时看了官方文档,可以使用另一方式进行配置即可。

  

官方说明

  0.引入pom依赖

  

  com.github.ulisesbocchio

  jasypt-spring-boot

  1.18

  

  其实就是不进行自动配置而已。

  1.启动类启动方式修改。

  @SpringBootApplication

  @Slf4j

  public class JasyptApplication {

  public static void main(String[] args) throws Exception {

  // SpringApplication.run(JasyptApplication.class, args);

  //使用自定义环境变量 实现一些特殊场景下的加密字符解密操作

  //若无额外的xml引入文件需要解密时,可直接使用SpringApplication.run(JasyptApplication.class, args);即可

  //若想在引入的xml中使用,需要加入环境变量,如以下模式

  new SpringApplicationBuilder().environment(new StandardEncryptableEnvironment())

  .sources(JasyptApplication.class).run(args);

  log.info(spring-boot-jasypt-chapter37服务启动!);

  }

  }

  其他配置项

  运维说明

  为了方便运维人员对各类敏感密钥进行加密操作,提供了自动化脚本,方便生成相应的加密串。

  密钥(盐值)存储说明

  本身加解密过程都是通过盐值进行处理的,所以正常情况下盐值和加密串是分开存储的。盐值应该放在系统属性、命令行或是环境变量来使用,而不是放在配置文件。

  命令行示例

  java -jar xxx.jar --jasypt.encryptor.password=xxx

  环境变量示例

  设置环境变量:

  # 打开/etc/profile文件

  vim /etc/profile

  # 文件末尾插入

  export JASYPT_PASSWORD = xxxx

  启动命令:

  java -jar xxx.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}

  bat脚本

  为了方便,简单编写了一个bat脚本方便使用。

  @echo off

  set/p input=待加密的明文字符串:

  set/p password=加密密钥(盐值):

  echo 加密中......

  java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=%input% password=%password% algorithm=PBEWithMD5AndDES

  pause

  注意:jasypt-1.9.2.jar 文件需要和bat脚本放在相同目录下。此包可直接在示例项目中直接下载。

  使用示例:

  注意:相应加密串,每次加密的结果是不同的。

猜你喜欢

转载自blog.csdn.net/qianfeng_dashuju/article/details/90038082