From e1e235313967d78b037fc7063275064eb2050c47 Mon Sep 17 00:00:00 2001 From: curry772 Date: Fri, 5 Jun 2026 09:47:31 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B1=B0=EB=9E=98=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20DB=20=EC=95=94=ED=98=B8=ED=99=94=20DAMO=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DB 거래로그 : EAILogDAO.java - FILE 거래로그 : EAIFileLogger.java - 미확인(Unkown) 로그 : InboundErrorInfoDAO.java --- libs/damo-manager.jar | Bin 0 -> 7506 bytes .../agent/encryption/EncryptionManager.java | 114 +++++++++++++++++- .../eai/common/logger/EAIFileLogger.java | 47 ++++---- .../eactive/eai/common/logger/EAILogDAO.java | 113 ++--------------- .../inbound/error/InboundErrorInfoDAO.java | 34 +----- 5 files changed, 149 insertions(+), 159 deletions(-) create mode 100644 libs/damo-manager.jar diff --git a/libs/damo-manager.jar b/libs/damo-manager.jar new file mode 100644 index 0000000000000000000000000000000000000000..e8efc5df23217f532af0ae9d45ee489071a29675 GIT binary patch literal 7506 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 cRsV + // {"+attribute+"}"); + // logger.debug("DB 암호화 #2 : {} -> {}", originalAttribute, attribute); + } + } + return plainText; + } else { + return plainText; + } + } else { + return plainText; + } + + } + + public String decryptDBData(String dbData) { + if (StringUtils.isNotEmpty(dbData)) { + if (this.isEncrypted(dbData)) { + KjbSafedbWrapper safeDBWrapper = KjbSafedbWrapper.getInstance(); + try { + dbData = safeDBWrapper.decryptNotRnno(dbData); + } catch (Exception e) { + // 복호화 실패시 원본 반환 + String logData = dbData.length() <= 3 ? dbData : dbData.substring(0, 3) + "..."; + logger.warn("DB 복호화 실패: 복호화하지 않고 원본 반환. dbData={} (Length : {})", logData, dbData.length()); + return dbData; + } + } else { + logger.debug("DB 복호화 경고: Base64 형식이 아님. 복호화하지 않고 원본 반환. dbData={}", dbData); + } + } + // logger.debug("DB 복호화 #2 : {} -> {}", dbDataOriginal, dbData); + return dbData; + } + + /** + * 암호화 여부 확인(base64 인코딩 여부로 판단, 또는 0-9, - 로 구성된 경우 암호화 되지 않은 걸로 판단(연락처)) + * + * @param data + * @return + */ + private boolean isEncrypted(String data) { + if (StringUtils.isEmpty(data)) { + return false; + } + + // 숫자, - 로만 구성된 경우 암호화 되지 않은 걸로 판단 (ex: 연락처) + if (data.matches("^[0-9-]+$")) { + return false; + } + + data = data.trim(); + + // Base64 형식 체크 + if (!Utils.isBase64(data)) { + return false; + } + + // Base64 길이 체크 (4의 배수) + if (data.length() % 4 != 0) { + return false; + } + + return true; + } } diff --git a/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java b/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java index 83b593e..e01f19a 100644 --- a/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java +++ b/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java @@ -253,7 +253,9 @@ public class EAIFileLogger * @exception DAOException **/ public void setLog(EAIMessage message, Properties prop) throws Exception{ - + + if(!tranLogger.isError()) + return; // 업무데이터 size 체크하여 업무데이터1,2에 insert하고 // addBwkDataSub(message) 호출 여부 결정 @@ -517,27 +519,28 @@ public class EAIFileLogger //전장표 데이터부 JSON Array로 저장 //암호화 - Charset hexaCharset = Charset.forName("euc-kr"); - if("Y".equalsIgnoreCase(EncryptionManager.getInstance().getEncryptYN()) ){ - try{ - biz = HexaConverter.bytesToHexa(bizMsgStr.getBytes(hexaCharset)); - }catch(Exception e){ - logger.error("EAIFileLogger] bizMsgStr encryption Error - " + e.getMessage()); - } - try{ - header = HexaConverter.bytesToHexa(header.getBytes(hexaCharset)); - }catch(Exception e){ - logger.error("EAIFileLogger] header encryption Error - " + e.getMessage()); - } - try{ - mdclData = HexaConverter.bytesToHexa(mdclData.getBytes(hexaCharset)); - }catch(Exception e){ - logger.error("EAIFileLogger] mdclData encryption Error - " + e.getMessage()); - } - - }else { - biz = bizMsgStr; - } + biz = EncryptionManager.getInstance().encryptDBData(bizMsgStr); +// Charset hexaCharset = Charset.forName("euc-kr"); +// if("Y".equalsIgnoreCase(EncryptionManager.getInstance().getEncryptYN()) ){ +// try{ +// biz = HexaConverter.bytesToHexa(bizMsgStr.getBytes(hexaCharset)); +// }catch(Exception e){ +// logger.error("EAIFileLogger] bizMsgStr encryption Error - " + e.getMessage()); +// } +// try{ +// header = HexaConverter.bytesToHexa(header.getBytes(hexaCharset)); +// }catch(Exception e){ +// logger.error("EAIFileLogger] header encryption Error - " + e.getMessage()); +// } +// try{ +// mdclData = HexaConverter.bytesToHexa(mdclData.getBytes(hexaCharset)); +// }catch(Exception e){ +// logger.error("EAIFileLogger] mdclData encryption Error - " + e.getMessage()); +// } +// +// }else { +// biz = bizMsgStr; +// } //임시코드 시작 String logType = PropManager.getInstance().getProperty("BIZ_LOG_TYPE"); diff --git a/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java b/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java index 55b386f..a8c500d 100644 --- a/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java +++ b/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java @@ -3,8 +3,6 @@ package com.eactive.eai.common.logger; import java.nio.charset.Charset; import java.util.Properties; -import com.eactive.eai.authserver.service.OAuth2Manager; -import com.eactive.eai.authserver.vo.ClientVO; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -14,13 +12,10 @@ import org.springframework.transaction.annotation.Transactional; import com.eactive.eai.adapter.AdapterGroupVO; import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.agent.encryption.EncryptionManager; +import com.eactive.eai.authserver.service.OAuth2Manager; +import com.eactive.eai.authserver.vo.ClientVO; import com.eactive.eai.common.dao.DAOException; import com.eactive.eai.common.exception.ExceptionUtil; -import com.eactive.eai.common.logger.EAILogLogger; -import com.eactive.eai.common.logger.StatAdapterLogLogger; -import com.eactive.eai.common.logger.StatLogLogger; -import com.eactive.eai.common.logger.StatTranLogLogger; -import com.eactive.eai.common.logger.SubMessageLogLogger; import com.eactive.eai.common.logger.mapper.StatAdapterLogMapper; import com.eactive.eai.common.logger.mapper.StatLogMapper; import com.eactive.eai.common.logger.mapper.StatTranLogMapper; @@ -30,7 +25,6 @@ import com.eactive.eai.common.message.MessageType; import com.eactive.eai.common.message.ServiceMessage; import com.eactive.eai.common.monitor.StatMonitorLogVO; import com.eactive.eai.common.property.PropManager; - import com.eactive.eai.common.server.EAIServerManager; import com.eactive.eai.common.server.EAIServerVO; import com.eactive.eai.common.server.loader.EAIServerLoader; @@ -55,11 +49,10 @@ import com.eactive.eai.transformer.layout.Item; import com.eactive.eai.transformer.layout.Layout; import com.eactive.eai.transformer.transform.Transform; import com.eactive.eai.transformer.transform.TransformManager; -import com.eactive.eai.util.HexaConverter; -import com.ext.eai.common.stdmessage.STDMessageKeys; // safeDB import com.eactive.ext.kjb.safedb.KjbSafedbWrapper; import com.eactive.ext.kjb.safedb.Utils; +import com.ext.eai.common.stdmessage.STDMessageKeys; @Service @@ -478,20 +471,12 @@ public class EAILogDAO { } */ - // jwhong safeDB 암호화 - - if ("Y".equalsIgnoreCase(EncryptionManager.getInstance().getEncryptYN())) { - try { - biz = EncryptSafeDb(bizMsgStr); - } catch (Exception e) { - logger.error("EAIFileLogger] bizMsgStr encryption Error - " + e.getMessage()); - biz = bizMsgStr; - } - } else { + try { + biz = EncryptionManager.getInstance().encryptDBData(bizMsgStr); + } catch (Exception e) { + logger.error("EAIFileLogger] bizMsgStr encryption Error - " + e.getMessage()); biz = bizMsgStr; - } - - // jwhong safeDB end + } // 임시코드 시작 String logType = PropManager.getInstance().getProperty("BIZ_LOG_TYPE"); @@ -860,88 +845,6 @@ public class EAILogDAO { } return false; } - - - private String EncryptSafeDb(String attribute) { - String originalAttribute = attribute; - if (StringUtils.isNotEmpty(attribute)) { - KjbSafedbWrapper wrapper = KjbSafedbWrapper.getInstance(); - attribute = wrapper.encryptNotRnnoString(attribute); - - if (logger.isInfo()) { - // originalAttribute 홀수 글자 마스킹 - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < originalAttribute.length(); i++) { - if (i % 2 == 0) { - sb.append(originalAttribute.charAt(i)); - } else { - sb.append("*"); - } - } - - originalAttribute = sb.toString(); - // System.out.println("DB 암호화 #2 : {"+ originalAttribute +"} -> {"+attribute+"}"); - //logger.debug("DB 암호화 #2 : {} -> {}", originalAttribute, attribute); - } - } - return attribute; - - } - - public String DecryptSafeDb(String dbData) { - - String dbDataOriginal = dbData; - if (StringUtils.isNotEmpty(dbData)) { - if (this.isEncrypted(dbData)) { - KjbSafedbWrapper safeDBWrapper = KjbSafedbWrapper.getInstance(); - try { - dbData = safeDBWrapper.decryptNotRnno(dbData); - } catch (Exception e) { - // 복호화 실패시 원본 반환 - String logData = dbData.length() <= 3 ? dbData : dbData.substring(0, 3) + "..."; - logger.warn("DB 복호화 실패: 복호화하지 않고 원본 반환. dbData={} (Length : {})", logData, dbData.length()); - return dbData; - } - } else { - logger.debug("DB 복호화 경고: Base64 형식이 아님. 복호화하지 않고 원본 반환. dbData={}", dbData); - } - } - - //logger.debug("DB 복호화 #2 : {} -> {}", dbDataOriginal, dbData); - - return dbData; - } - - /** - * 암호화 여부 확인(base64 인코딩 여부로 판단, 또는 0-9, - 로 구성된 경우 암호화 되지 않은 걸로 판단(연락처)) - * @param data - * @return - */ - private boolean isEncrypted(String data) { - if (StringUtils.isEmpty(data)) { - return false; - } - - // 숫자, - 로만 구성된 경우 암호화 되지 않은 걸로 판단 (ex: 연락처) - if (data.matches("^[0-9-]+$")) { - return false; - } - - data = data.trim(); - - // Base64 형식 체크 - if (!Utils.isBase64(data)) { - return false; - } - - // Base64 길이 체크 (4의 배수) - if (data.length() % 4 != 0) { - return false; - } - - - return true; - } /* diff --git a/src/main/java/com/eactive/eai/inbound/error/InboundErrorInfoDAO.java b/src/main/java/com/eactive/eai/inbound/error/InboundErrorInfoDAO.java index 546619b..3e66fa4 100644 --- a/src/main/java/com/eactive/eai/inbound/error/InboundErrorInfoDAO.java +++ b/src/main/java/com/eactive/eai/inbound/error/InboundErrorInfoDAO.java @@ -28,37 +28,11 @@ public class InboundErrorInfoDAO extends BaseDAO { private InboundErrorInfoMapper inboundErrorInfoMapper; public void addInboundErrorInfo(InboundErrorInfoVO vo) throws DAOException { - EncryptionManager manager = EncryptionManager.getInstance(); String bzwkDataCtnt = vo.getBwkDataTxt(); - - // 업무데이터를 암호화할 경우 길이가 늘어나는 문제가 있으므로 double check 함 - if ("Y".equalsIgnoreCase(manager.getEncryptYN())) { - if (bzwkDataCtnt.length() > 2000) { - bzwkDataCtnt = StringUtil.chunkString(bzwkDataCtnt, 2000); - } - - String encbzwkDataCtnt = null; - try { - encbzwkDataCtnt = ScpDbAgentUtil.ScpEncB64( - PropManager.getInstance().getProperties(ScpDbAgentUtil.EXT_MODULE), bzwkDataCtnt, "EUC-KR"); - } catch (Exception e) { - logger.error("addInboundErrorInfo] scpdb_agent encryption Error - " + e.getMessage()); - } - - // double check - if (encbzwkDataCtnt != null && encbzwkDataCtnt.length() > 4000) { - bzwkDataCtnt = StringUtil.chunkString(bzwkDataCtnt, 500); - try { - encbzwkDataCtnt = ScpDbAgentUtil.ScpEncB64( - PropManager.getInstance().getProperties(ScpDbAgentUtil.EXT_MODULE), bzwkDataCtnt, "EUC-KR"); - bzwkDataCtnt = encbzwkDataCtnt; - } catch (Exception e) { - logger.error("addInboundErrorInfo] scpdb_agent encryption Error - " + e.getMessage()); - } - } - } else { - bzwkDataCtnt = StringUtil.chunkString(bzwkDataCtnt, 4000); - } + + // db 암호화 + bzwkDataCtnt = EncryptionManager.getInstance().encryptDBData(bzwkDataCtnt); + vo.setBwkDataTxt(bzwkDataCtnt); try { vo.setErrTm((vo.getErrTm()).substring(0, 16));