- jasypt-spring-boot-starter参数加解密
- 1 自定义
- 1.1 导包
- 1.2 启动开关
- 1.3 code
原理:SpringBoot 加载.yml,.properties配置文件的数据,进行一步加解密的操作。
1 自定义 1.1 导包
com.github.ulisesbocchio
jasypt-spring-boot-starter
3.0.3
1.2 启动开关
@EnableEncryptableProperties1.3 code
import com.ulisesbocchio.jasyptspringboot.EncryptablePropertyDetector;
import org.apache.commons.lang3.StringUtils;
import org.jasypt.encryption.StringEncryptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JasyptConfiguration {
private static String START_PREFIX_MD5 = "MD5(";
private static String END_SUFFIX_MD5 = ")";
//这里的名字必须是jasyptStringEncryptor,不能改动
@Bean(name = "jasyptStringEncryptor")
public StringEncryptor stringEncryptor(MyEncryptablePropertyDetector encryptablePropertyDetector) {
return encryptablePropertyDetector;
}
//这里的名字必须是encryptablePropertyDetector,不能改动
@Bean(name = "encryptablePropertyDetector")
public MyEncryptablePropertyDetector myEncryptablePropertyDetector() {
return new MyEncryptablePropertyDetector();
}
private class MyEncryptablePropertyDetector implements EncryptablePropertyDetector, StringEncryptor {
@Override
public boolean isEncrypted(String s) {
if (StringUtils.isNotBlank(s) &&
s.toUpperCase().startsWith(START_PREFIX_MD5)
&& s.toUpperCase().endsWith(END_SUFFIX_MD5)) {
return true;
}
return false;
}
@Override
public String unwrapEncryptedValue(String s) {
return s;
}
@Override
public String encrypt(String s) {
return s;
}
@Override
public String decrypt(String s) {
int prefixIndex = s.indexOf(START_PREFIX_MD5);
int suffixIndex = s.indexOf(END_SUFFIX_MD5);
String result = s.substring(prefixIndex + START_PREFIX_MD5.length(), suffixIndex);
return result;
}
}



