jasypt

可被加密的信息

  • system property 系统变量
  • envirnment property 环境变量
  • command line argument 命令行参数
  • application.properties应用配置文件
  • yaml properties应用配置文件
  • other custom property sources 其他配置文件

如果项目使用@SpringBootApplication或者@EnableAutoConfiguration注解,则只需要在pom中加入以下依赖

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

如果不是上述情况,则使用下面依赖,并在java类上夹注解@EnableEncryptableProperties

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

如果不想使用上述2种全局加密的话,而只是需要在特定配置上才加密,使用@EncryptablePropertySource指定配置文件

@EncryptablePropertySource(name = "EncryptProperties", value = "classpath:encrypted.properties")
public class MyApplication {

}

生成加密字符串

http://www.jasypt.org/download.html

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=ccblife input=atfs123456 algorithm=PBEWithMD5AndDES

# 或者

配置密文的默认格式:ENC(),格式也可通过jasypt.encryptor.property.prefixjasypt.encryptor.property.suffix

jasypt:
  encryptor:
    # 必填
    password: ccblife
    algorithm: PBEWithMD5AndDES
    providerClassname:
    # 建议指定,(org.jasypt.salt.RandomSaltGenerator)
    saltGeneratorClassname:
    # 不同版本的默认值不一样,会导致解密失败,尤其注意(org.jasypt.iv.RandomIvGenerator),次值需要对称
    ivGeneratorClassname: org.jasypt.iv.NoIvGenerator

由于应用支持的项目中大多数使用的是jasypt-1.9.3.jar 而P9提供的是jasypt-1.9.2.jar,而此包里根本没有ivGeneratorClassname的选项,导致使用1.9.3的工程,需要写明org.jasypt.iv.NoIvGenerator