I introduce the way to use jasypt encryption with spring-boot
- Structure
- TestApplication.java
package org.blog.test; import lombok.extern.slf4j.Slf4j; import org.jasypt.encryption.StringEncryptor; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig; import org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.io.ClassPathResource; @SpringBootApplication @Slf4j public class TestApplication implements CommandLineRunner { @Value("${test.password}") private String encryptedPassword; @Value("${test.test}") private String testString; public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @Bean public static EnvironmentStringPBEConfig environmentVariablesConfiguration() { EnvironmentStringPBEConfig environmentVariablesConfiguration = new EnvironmentStringPBEConfig(); environmentVariablesConfiguration.setAlgorithm("PBEWithMD5AndDES"); environmentVariablesConfiguration.setPasswordEnvName("APP_ENCRYPTION_PASSWORD"); environmentVariablesConfiguration.setPassword("jasypt"); return environmentVariablesConfiguration; } @Bean public static StringEncryptor configurationEncryptor() { StandardPBEStringEncryptor configurationEncryptor = new StandardPBEStringEncryptor(); configurationEncryptor.setConfig(environmentVariablesConfiguration()); return configurationEncryptor; } @Bean public static PropertyPlaceholderConfigurer propertyConfigurer() { EncryptablePropertyPlaceholderConfigurer propertyConfigurer = new EncryptablePropertyPlaceholderConfigurer(configurationEncryptor()); propertyConfigurer.setLocation(new ClassPathResource("application.properties")); // propertyConfigurer.setLocation(resource); return propertyConfigurer; } public void run(String... arg0) throws Exception { log.info("encryptedPassword : {}", encryptedPassword); log.info("testString : {}", testString); } }
- application.properties
test.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) test.test=test
- logback.xml
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
- pom.xml
4.0.0 org.blog.test jasypt-test 0.1.0 org.springframework.boot spring-boot-starter-parent 1.3.2.RELEASE org.springframework.boot spring-boot-starter-web org.projectlombok lombok 1.16.6 ch.qos.logback logback-classic ch.qos.logback logback-core 1.1.3 org.jasypt jasypt-spring31 1.9.2
Jasypt handle the property surrround by "ENC()" as encrypted value, and decrypt that value except for "ENC()".
You can find the value decrypted as below.
test.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
encrypted value => G6N718UuyPE5bHyWKyuLQSm02auQPUtm => decrypt => reports_passwd
Execution Result
18:30:45.150 [main] INFO org.blog.test.TestApplication - encryptedPassword : reports_passwd 18:30:45.150 [main] INFO org.blog.test.TestApplication - testString : test 18:30:45.155 [main] INFO org.blog.test.TestApplication - Started TestApplication in 2.503 seconds (JVM running for 2.888)
original source : www.jasypt.org/spring31.html
good posts
답글삭제recommed file encryption software to encrypt some files on cnet
Thanks for your reply~!!
삭제