암복호화 지원 관련 소스/설정 수정
parent
52b034bc11
commit
2b6927f890
@ -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…
Reference in New Issue