jasypt加密
Jasypt Spring Boot 为 Spring Boot 应用程序中的属性源提供加密支持。
有 3 种方法可以集成jasypt-spring-boot
到您的项目中:
jasypt-spring-boot-starter
如果使用@SpringBootApplication
或@EnableAutoConfiguration
将在整个 Spring 环境中启用可加密属性,只需将启动器 jar 添加到您的类路径- 添加
jasypt-spring-boot
到您的类路径并添加@EnableEncryptableProperties
到您的主配置类以在整个 Spring 环境中启用可加密属性 - 添加
jasypt-spring-boot
到您的类路径并声明单独的可加密属性源@EncrytablePropertySource
1 pom.xml文件添加依赖
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version> 3.0 . 3 </version> </dependency> |
2 参数
Key | Required | Default Value |
jasypt.encryptor.password | True | - |
jasypt.encryptor.algorithm | False | PBEWITHHMACSHA512ANDAES_256 |
jasypt.encryptor.key-obtention-iterations | False | 1000 |
jasypt.encryptor.pool-size | False | 1 |
jasypt.encryptor.provider-name | False | SunJCE |
jasypt.encryptor.provider-class-name | False | null |
jasypt.encryptor.salt-generator-classname | False | org.jasypt.salt.RandomSaltGenerator |
jasypt.encryptor.iv-generator-classname | False | org.jasypt.iv.RandomIvGenerator |
jasypt.encryptor.string-output-type | False | base64 |
jasypt.encryptor.proxy-property-sources | False | false |
jasypt.encryptor.skip-property-sources | False | empty list |
2 cmd方式加密密码
input:为要加密的密码
password:密钥
algorithm:采用的加密算法
java -cp C:/Users/Administrator/.m2/repository/org/jasypt/jasypt/ 1.9 . 2 /jasypt- 1.9 . 2 .jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input= "123456" password=qwer* 1234 * algorithm=PBEWithMD5AndDES |
3 工具类加解密:
@Slf4j public class JasyptUtil { /** * 加密 * @param text 需要加密的字符串 * @return String */ public static String encrypt(String text) { return encrypt(text, "scrm" ); } /** * 解密 * @param text 需要加密的字符串 * @param password 加密密码 * @return String */ public static String encrypt(String text,String password) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); //加密配置 EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig(); config.setAlgorithm( "PBEWithMD5AndDES" ); //自己在用的时候更改此密码 config.setPassword(password); //应用配置 encryptor.setConfig(config); return encryptor.encrypt(text); } /** * 解密 * @param text 需要加密的字符串 * @return String */ public static String decrypt(String text) { return decrypt(text, "scrm" ); } /** * 解密 * @param text 需要解密的字符串 * @param password 解密密码 * @return String */ public static String decrypt(String text,String password) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); //加密配置 EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig(); config.setAlgorithm( "PBEWithMD5AndDES" ); //自己在用的时候更改此密码 config.setPassword(password); //应用配置 encryptor.setConfig(config); //解密 return encryptor.decrypt(text); } } |
4 配置文件中
jasypt.encryptor.algorithm = scrm或者zstest jasypt.encryptor.algorithm = PBEWithMD5AndDES jasypt.encryptor.iv-generator-classname = org.jasypt.iv.NoIvGenerator spring.datasource.password = ENC(HTkX8gEYcsi60YFmsoGCrQ==) |
二:原理
2.1、执行过程
2.2、主要组件
StringEncryptor 加密解密处理器
EncryptablePropertySourceConverter 用于调用配置文件转件器
EncryptablePropertyResolver 配置处理器
EncryptablePropertyDetector 是否加密的检查器
EncryptablePropertyFilter 过滤器,用于过滤哪些class无需处理