package com.its.op.config; import org.jasypt.encryption.StringEncryptor; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; import org.jasypt.salt.StringFixedSaltGenerator; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; //@Configuration //@EnableEncryptableProperties public class JasyptConfig { @Value("${jasypt.encryptor.password:asdkjfaslkjflkajslfjkajlkf}") private final String encKey = "asdkjfaslkjflkajslfjkajlkf"; @Bean("jasyptStringEncryptor") public StringEncryptor stringEncryptor() { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); SimpleStringPBEConfig config = new SimpleStringPBEConfig(); // ==> SimpleStringPBEConfig 사용시 아래 3개 반드시 설정해야함 config.setPassword(encKey); // 암호화에 사용할 키 config.setPoolSize(1); // Pool Size config.setSaltGenerator(new StringFixedSaltGenerator("fixedSalt")); // 고정으로 암호화(Default: Random) //config.setAlgorithm("PBEWithMD5AndTripleDES"); //config.setAlgorithm("PBEWithMD5AndDES"); // Jasypt 를 이용한 암호화 알고리즘 //config.setProviderName("SunJCE"); config.setKeyObtentionIterations("10000"); config.setStringOutputType("base64"); /*private Boolean proxyPropertySources = false; private String bean = "jasyptStringEncryptor"; private String password; private String algorithm = "PBEWithMD5AndDES"; private String keyObtentionIterations = "1000"; private String poolSize = "1"; private String providerName = null; //config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); private String saltGeneratorClassname = "org.jasypt.salt.RandomSaltGenerator"; private String stringOutputType = "base64";*/ encryptor.setConfig(config); return encryptor; } public String getKey() { return this.encKey; } public String encrypt(String string) { StringEncryptor encrypt = stringEncryptor(); return encrypt.encrypt(string); } public String decrypt(String string) { StringEncryptor decrypt = stringEncryptor(); return decrypt.decrypt(string); } }