암복호화 지원 관련 소스/설정 수정

main
mjkhan21 10 months ago
parent 52b034bc11
commit 2b6927f890

@ -55,6 +55,16 @@
<artifactId>xit-disabled-parking</artifactId> <artifactId>xit-disabled-parking</artifactId>
<version>23.04.01-SNAPSHOT</version> <version>23.04.01-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>org.egovframe.rte</groupId>
<artifactId>org.egovframe.rte.fdl.crypto</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cokr.xit.base</groupId>
<artifactId>xit-crypto</artifactId>
<version>23.04.01-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>org.mariadb.jdbc</groupId> <groupId>org.mariadb.jdbc</groupId>

@ -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;
}
}

@ -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<String, Object> map = (Map<String, Object>)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<String, Object> map = (Map<String, Object>)obj;
if (map.containsKey(key)) {
decrypt(
() -> (String)map.get(key),
(v) -> map.put(key, v)
);
}
}
return this;
}
}

@ -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"]
}
]
}
Loading…
Cancel
Save