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.prefix和jasypt.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