com.microsoft.sqlserver
mssql-jdbc
diff --git a/src/main/java/com/interplug/qcast/QCastApplication.java b/src/main/java/com/interplug/qcast/QCastApplication.java
index c524a7ef..bebb8462 100644
--- a/src/main/java/com/interplug/qcast/QCastApplication.java
+++ b/src/main/java/com/interplug/qcast/QCastApplication.java
@@ -1,10 +1,13 @@
package com.interplug.qcast;
+import com.interplug.qcast.config.jasypt.JasyptConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.Import;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@Import({JasyptConfig.class})
public class QCastApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/interplug/qcast/config/jasypt/JasyptConfig.java b/src/main/java/com/interplug/qcast/config/jasypt/JasyptConfig.java
new file mode 100644
index 00000000..f323be58
--- /dev/null
+++ b/src/main/java/com/interplug/qcast/config/jasypt/JasyptConfig.java
@@ -0,0 +1,70 @@
+package com.interplug.qcast.config.jasypt;
+
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.context.annotation.Bean;
+
+/**
+ *
+ *
+ *
+ * 설정파일(yml or properties)에 있는 password 를 암호화
+ *
+ *
+ * @author KimYoungHyun (youngh.kim@kt.com)
+ */
+@Configurable
+public class JasyptConfig {
+
+ private static final String KEY = "qcast_jasypt_key";
+ private static final String ALGORITHM = "PBEWithMD5AndDES";
+
+ /**
+ *
+ *
+ *
+ * jasyptEncryptor 설정
+ *
+ *
+ * @author KimYoungHyun (youngh.kim@kt.com)
+ * @return StringEncryptor
+ */
+ @Bean(name = "jasyptStringEncryptor")
+ public StringEncryptor jasyptEncryptor() {
+ PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+ SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+
+ config.setPassword(KEY);
+ config.setAlgorithm(ALGORITHM);
+ config.setKeyObtentionIterations("1000");
+ config.setPoolSize("1");
+ config.setProviderName("SunJCE");
+ config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+ config.setStringOutputType("base64");
+ encryptor.setConfig(config);
+
+ return encryptor;
+ }
+
+ /**
+ *
+ *
+ *
+ * 평문을 암호화한다.
+ *
+ *
+ * @author KimYoungHyun (youngh.kim@kt.com)
+ * @param value
+ * @return String
+ */
+ public static String encrypt(String value) {
+ StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
+ pbeEnc.setAlgorithm(ALGORITHM);
+ pbeEnc.setPassword(KEY);
+
+ return pbeEnc.encrypt(value);
+ }
+}
diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml
index ef6ff2ca..3d8c0e9d 100644
--- a/src/main/resources/config/application.yml
+++ b/src/main/resources/config/application.yml
@@ -16,7 +16,7 @@ spring:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:log4jdbc:sqlserver://localhost:1433;databaseName=qcastdb;encrypt=true;trustServerCertificate=true
username: qcast
- password: qcast1234!
+ password: ENC(rg8lFosEDRzKrg3WQjFrrbUDlzLnbsMa)
maximum-pool-size: 4
pool-name: Master-HikariPool
# connection-test-query: SELECT 1
@@ -24,7 +24,7 @@ spring:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:log4jdbc:sqlserver://localhost:1433;databaseName=qcastdb;encrypt=true;trustServerCertificate=true
username: qcast
- password: qcast1234!
+ password: ENC(rg8lFosEDRzKrg3WQjFrrbUDlzLnbsMa)
maximum-pool-size: 4
pool-name: Read-HikariPool
# connection-test-query: SELECT 2
diff --git a/src/test/java/com/interplug/qcast/config/jasypt/JasyptConfigTest.java b/src/test/java/com/interplug/qcast/config/jasypt/JasyptConfigTest.java
new file mode 100644
index 00000000..8dc7c000
--- /dev/null
+++ b/src/test/java/com/interplug/qcast/config/jasypt/JasyptConfigTest.java
@@ -0,0 +1,14 @@
+package com.interplug.qcast.config.jasypt;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+
+@Slf4j
+class JasyptConfigTest {
+ @Test
+ void test() {
+ log.info(JasyptConfig.encrypt("qcast1234!"));
+ }
+}