pom.xml
< dependency> < groupId> com. github. ulisesbocchio< / groupId> < artifactId> jasypt- spring- boot- starter< / artifactId> < version> 3.0 .4 < / version>
< / dependency>
application.properties
# 盐值
jasypt. encryptor. password= 123
# 指定加密方式
jasypt. encryptor. algorithm= PBEWithMD5AndDES
jasypt. encryptor. iv- generator- classname: org. jasypt. iv. NoIvGenerator
jasypt. encryptor. property. prefix= P [
jasypt. encryptor. property. suffix= ]
自定义加密器
import org. jasypt. encryption. pbe. StandardPBEStringEncryptor ;
import org. jasypt. encryption. pbe. config. EnvironmentPBEConfig ; public class JasyptUtils { public static final String PBE_ALGORITHMS_MD5_DES = "PBEWITHMD5ANDDES" ; public static final String PBE_ALGORITHMS_MD5_TRIPLEDES = "PBEWITHMD5ANDTRIPLEDES" ; public static final String PBE_ALGORITHMS_SHA1_DESEDE = "PBEWITHSHA1ANDDESEDE" ; public static final String PBE_ALGORITHMS_SHA1_RC2_40 = "PBEWITHSHA1ANDRC2_40" ; private JasyptUtils ( ) { } public static String encrypt ( String encryptedStr, String password) { return encrypt ( encryptedStr, PBE_ALGORITHMS_MD5_DES , password) ; } public static String encrypt ( String encryptedStr, String algorithm, String password) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor ( ) ; EnvironmentPBEConfig config = new EnvironmentPBEConfig ( ) ; config. setAlgorithm ( algorithm) ; config. setPassword ( password) ; encryptor. setConfig ( config) ; return encryptor. encrypt ( encryptedStr) ; } public static String decrypt ( String decryptStr, String password) { return decrypt ( decryptStr, PBE_ALGORITHMS_MD5_DES , password) ; } public static String decrypt ( String decryptStr, String algorithm, String password) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor ( ) ; EnvironmentPBEConfig config = new EnvironmentPBEConfig ( ) ; config. setAlgorithm ( algorithm) ; config. setPassword ( password) ; encryptor. setConfig ( config) ; return encryptor. decrypt ( decryptStr) ; } public static void main ( String [ ] args) { String encryptedStr = "I am the string to be encryptedsss" ; String algorithm = PBE_ALGORITHMS_SHA1_DESEDE ; String password = "salt" ; String str = JasyptUtils . encrypt ( encryptedStr, algorithm, password) ; System . out. println ( "加密后的字符串:" + str) ; System . out. println ( "解密后的字符串:" + JasyptUtils . decrypt ( str, algorithm, password) ) ; }
}
启动解密方式1
java - jar app. jar -- jasypt. encryptor. password= salt
本地启动通过启动时传入密钥【Add VM options】
- Djasypt . encryptor. password= cf150b74e4824146ad76e9ebe757ba76
启动解密方式2
将自定义加密器添加到 Spring IoC 容器中。
@Configuration
public class JasyptConfig { @Value ( "${jasypt.encryptor.password}" ) private String password; @Bean ( "myStringEncryptor" ) public StringEncryptor myStringEncryptor ( ) { return new MyStringEncryptor ( password) ; }
}
添加配置文件
# 指定加解密在spring ioc容器中bean的名称,默认 jasyptStringEncryptor
jasypt. encryptor. bean= myStringEncryptor
# 盐值
jasypt. encryptor. password= 123
启动解密方式3
设置系统环境变量 JASYPT_ENCRYPTOR_PASSWORD = salt
Spring Boot 的项目配置文件指定系统环境变量:jasypt. encryptor. password= ${ JASYPT_ENCRYPTOR_PASSWORD : }