diff --git a/pom.xml b/pom.xml index aa5d2e86..03acb64a 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,16 @@ xit-disabled-parking 23.04.01-SNAPSHOT + + org.egovframe.rte + org.egovframe.rte.fdl.crypto + 4.1.0 + + + cokr.xit.base + xit-crypto + 23.04.01-SNAPSHOT + org.mariadb.jdbc diff --git a/src/main/java/cokr/xit/fims/EncryptionConfig.java b/src/main/java/cokr/xit/fims/EncryptionConfig.java deleted file mode 100644 index 8975a08e..00000000 --- a/src/main/java/cokr/xit/fims/EncryptionConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package cokr.xit.fims; - -import javax.annotation.Resource; - -import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import cokr.xit.fims.payer.dao.PayerEncryptor; -import cokr.xit.foundation.data.ARIA; -import cokr.xit.foundation.data.paging.EncryptionSupport; - -@Configuration -public class EncryptionConfig { - @Resource(name = "sqlSession") - private DefaultSqlSessionFactory sqlSessionFactory; - - @Bean - ARIA encryptor() { - return new ARIA() - .setKey("Copyright (c) 2015 - (주)엑스아이티") - .setAlgorithm("SHA-256"); - } - - @Bean - PayerEncryptor payerEncryptor() { - PayerEncryptor bean = new PayerEncryptor(); - bean.setARIA(encryptor()); - return bean; - } - - @Bean - EncryptionSupport encryptionSupport() { - EncryptionSupport support = new EncryptionSupport(); - support.setEncryptor(encryptor()); - support.setEnabled(true); - support.setAdaptors(payerEncryptor()); - - sqlSessionFactory.getConfiguration().addInterceptor(support); - - return support; - } -} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/payer/dao/PayerEncryptor.java b/src/main/java/cokr/xit/fims/payer/dao/PayerEncryptor.java deleted file mode 100644 index b0d25708..00000000 --- a/src/main/java/cokr/xit/fims/payer/dao/PayerEncryptor.java +++ /dev/null @@ -1,66 +0,0 @@ -package cokr.xit.fims.payer.dao; - -import java.util.Map; -import java.util.regex.Pattern; - -import cokr.xit.fims.payer.Payer; -import cokr.xit.fims.payer.PayerQuery; -import cokr.xit.foundation.data.paging.EncryptionSupport; - -public class PayerEncryptor extends EncryptionSupport.Adaptor { - private static final Pattern rtpyrNoPattern = Pattern.compile("\\d*"); - - @Override - public boolean supports(Object obj) { - return obj instanceof Map - || obj instanceof Payer - || obj instanceof PayerQuery; - } - - @Override - public boolean isEncrypted(String str) { - return !rtpyrNoPattern.matcher(str).matches(); - } - - @Override - public PayerEncryptor encrypt() { - if (obj instanceof Payer) { - Payer payer = (Payer)obj; - encrypt(payer::getRtpyrNo, payer::setRtpyrNo); - } else if (obj instanceof PayerQuery) { - PayerQuery req = (PayerQuery)obj; - encrypt(req::getRtpyrNo, req::setRtpyrNo); - } else if (obj instanceof Map) { - String key = "RTPYR_NO"; - Map map = (Map)obj; - if (map.containsKey(key)) { - encrypt( - () -> (String)map.get(key), - (v) -> map.put(key, v) - ); - } - } - return this; - } - - @Override - public PayerEncryptor decrypt() { - if (obj instanceof Payer) { - Payer payer = (Payer)obj; - decrypt(payer::getRtpyrNo, payer::setRtpyrNo); - } else if (obj instanceof PayerQuery) { - PayerQuery req = (PayerQuery)obj; - decrypt(req::getRtpyrNo, req::setRtpyrNo); - } else if (obj instanceof Map) { - String key = "RTPYR_NO"; - Map map = (Map)obj; - if (map.containsKey(key)) { - decrypt( - () -> (String)map.get(key), - (v) -> map.put(key, v) - ); - } - } - return this; - } -} \ No newline at end of file diff --git a/src/main/resources/xit-crypto.conf b/src/main/resources/xit-crypto.conf new file mode 100644 index 00000000..0e5c4cb4 --- /dev/null +++ b/src/main/resources/xit-crypto.conf @@ -0,0 +1,19 @@ +{ "enabled": true, + "cryptoDefs": [ + { "name": "aria", + "class": "cokr.xit.base.crypto.bean.ARIA", + "settings": { + "key": "Copyright (c) 2015 - (주)엑스아이티", + "algorithm": "SHA-256", + "blockSize": 1024 + } + } + ], + "targetValues": [ + { "name": "주민등록번호", + "mapKeys": ["RTPYR_NO"], + "objectProperties": ["rtpyrNo"], + "cryptoDefs": ["aria"] + } + ] +} \ No newline at end of file