이준호 이준호 2025-08-26
kmc 암호화모듈 개발완료
http://pms.iten.co.kr:9999/issues/4608
@3dc2bb67d910107c5e1fed141667d3473e4abfa7
.gitignore
--- .gitignore
+++ .gitignore
@@ -202,3 +202,6 @@
 /mvnw
 /mvnw.cmd
 /.gemini.zip
+
+### MAC OS ###
+.DS_Store
(No newline at end of file)
src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
--- src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrGroupController.java
@@ -74,7 +74,7 @@
 	private EgovMberManageService mberManageService;
 	
 	@Resource(name = "KmcCertChecker")
-	private KmcCertChecker kmcCertCheck;
+	private KmcCertChecker kmcCertChecker;
 	
 	/**
 	 * 주소록 그룹 리스트
@@ -954,7 +954,7 @@
 				mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAddrSubmitAjax.do");
 				mberCertPhoneVO.setPlusInfo(mberManageVO.getMberId());
 				
-				AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+				AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 
 				modelAndView.addObject("tr_cert", certVO.getTr_cert());
 				modelAndView.addObject("tr_url", certVO.getTr_url());
@@ -979,241 +979,16 @@
 		 */
 
 		@RequestMapping("/web/cop/kmc/authRequestAddrSubmitAjax.do")
-		public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model,
-				@RequestParam Map<String, Object> commandMap, @ModelAttribute("searchVO") KmcVO kmcVO,
-				RedirectAttributes redirectAttributes) throws Exception {
+		public String authRequestFindIdPwAjax(
+											HttpServletRequest request
+											, HttpServletResponse response
+											, ModelMap model
+											, @RequestParam Map<String, Object> commandMap
+											, @ModelAttribute("searchVO") KmcVO kmcVO
+											, RedirectAttributes redirectAttributes
+										) throws Exception {
 
-			String errMessage = ""; // 에러메세지
-
-			String rec_cert = ""; // 결과값(암호화)
-			String certNum = ""; // certNum
-
-			rec_cert = request.getParameter("rec_cert").trim();
-			certNum = request.getParameter("certNum").trim();
-
-			kmcVO.setRecCert(rec_cert);
-			kmcVO.setCertNum(certNum);
-			// 파라미터 유효성 검증
-			if (rec_cert.length() == 0 || certNum.length() == 0) {
-				errMessage = "비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			// 변수선언
-			// --------------------------------------------------------------------------------------------------------
-			String k_certNum = ""; // 파라미터로 수신한 요청번호
-			k_certNum = certNum;
-			String date = ""; // 요청일시
-			String CI = ""; // 연계정보(CI)
-			String DI = ""; // 중복가입확인정보(DI)
-			String phoneNo = ""; // 휴대폰번호
-			String phoneCorp = ""; // 이동통신사
-			String birthDay = ""; // 생년월일
-			String gender = ""; // 성별
-			String nation = ""; // 내국인
-			String name = ""; // 성명
-			String M_name = ""; // 미성년자 성명
-			String M_birthDay = ""; // 미성년자 생년월일
-			String M_Gender = ""; // 미성년자 성별
-			String M_nation = ""; // 미성년자 내외국인
-			String result = ""; // 결과값
-
-			String certMet = ""; // 인증방법
-			String ip = ""; // ip주소
-			String plusInfo = "";
-
-			String encPara = "";
-			String encMsg1 = "";
-			String encMsg2 = "";
-			String msgChk = "";
-
-			com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-
-			// 02. 1차 복호화
-			// 수신된 certNum를 이용하여 복호화
-			rec_cert = seed.getDec(rec_cert, k_certNum);
-
-			// 03. 1차 파싱
-			int inf1 = rec_cert.indexOf("/", 0);
-			int inf2 = rec_cert.indexOf("/", inf1 + 1);
-
-			encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터
-			encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값
-
-			// 04. 위변조 검증
-			encMsg2 = seed.getMsg(encPara);
-			kmcVO.setEncMsg2(encMsg2);
-			if (encMsg2.equals(encMsg1)) {
-				msgChk = "Y";
-			}
-
-			if (!"Y".equals(msgChk)) {
-				errMessage = "비정상접근입니다.";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			// 05. 2차 복호화
-			rec_cert = seed.getDec(encPara, k_certNum);
-			kmcVO.setRecCert(rec_cert);
-			// 06. 2차 파싱
-			int info1 = rec_cert.indexOf("/", 0);
-			int info2 = rec_cert.indexOf("/", info1 + 1);
-			int info3 = rec_cert.indexOf("/", info2 + 1);
-			int info4 = rec_cert.indexOf("/", info3 + 1);
-			int info5 = rec_cert.indexOf("/", info4 + 1);
-			int info6 = rec_cert.indexOf("/", info5 + 1);
-			int info7 = rec_cert.indexOf("/", info6 + 1);
-			int info8 = rec_cert.indexOf("/", info7 + 1);
-			int info9 = rec_cert.indexOf("/", info8 + 1);
-			int info10 = rec_cert.indexOf("/", info9 + 1);
-			int info11 = rec_cert.indexOf("/", info10 + 1);
-			int info12 = rec_cert.indexOf("/", info11 + 1);
-			int info13 = rec_cert.indexOf("/", info12 + 1);
-			int info14 = rec_cert.indexOf("/", info13 + 1);
-			int info15 = rec_cert.indexOf("/", info14 + 1);
-			int info16 = rec_cert.indexOf("/", info15 + 1);
-			int info17 = rec_cert.indexOf("/", info16 + 1);
-			int info18 = rec_cert.indexOf("/", info17 + 1);
-
-			certNum = rec_cert.substring(0, info1);
-			kmcVO.setCertNum(certNum);
-			date = rec_cert.substring(info1 + 1, info2);
-			kmcVO.setDate(date);
-			CI = rec_cert.substring(info2 + 1, info3);
-			kmcVO.setCI(CI);
-			phoneNo = rec_cert.substring(info3 + 1, info4);
-			kmcVO.setPhoneNo(phoneNo);
-			phoneCorp = rec_cert.substring(info4 + 1, info5);
-			kmcVO.setPhoneCorp(phoneCorp);
-			birthDay = rec_cert.substring(info5 + 1, info6);
-			kmcVO.setBirthDay(birthDay);
-			gender = rec_cert.substring(info6 + 1, info7);
-			kmcVO.setGender(gender);
-			nation = rec_cert.substring(info7 + 1, info8);
-			kmcVO.setNation(nation);
-			name = rec_cert.substring(info8 + 1, info9);
-			kmcVO.setName(name);
-			result = rec_cert.substring(info9 + 1, info10);
-			kmcVO.setResult(result);
-			certMet = rec_cert.substring(info10 + 1, info11);
-			kmcVO.setCertMet(certMet);
-			ip = rec_cert.substring(info11 + 1, info12);
-			kmcVO.setIp(ip);
-			M_name = rec_cert.substring(info12 + 1, info13);
-			kmcVO.setMName(M_name);
-			M_birthDay = rec_cert.substring(info13 + 1, info14);
-			kmcVO.setMBirthDay(M_birthDay);
-			M_Gender = rec_cert.substring(info14 + 1, info15);
-			kmcVO.setMGender(M_Gender);
-			M_nation = rec_cert.substring(info15 + 1, info16);
-			kmcVO.setMNation(M_nation);
-			plusInfo = rec_cert.substring(info16 + 1, info17);
-			kmcVO.setPlusInfo(plusInfo);
-			DI = rec_cert.substring(info17 + 1, info18);
-			kmcVO.setDI(DI);
-
-			// 07. CI, DI 복호화
-			CI = seed.getDec(CI, k_certNum);
-			kmcVO.setCI(CI);
-			DI = seed.getDec(DI, k_certNum);
-			kmcVO.setDI(DI);
-
-			if ("Y".equals(result)) {
-
-			}
-
-			// --------------------------------------------------------------
-			String regex = "";
-			if (certNum.length() == 0 || certNum.length() > 40) {
-				errMessage = "요청번호 비정상.";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[0-9]*";
-			if (date.length() != 14 || !paramChk(regex, date)) {
-				errMessage = "요청일시";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[A-Z]*";
-			if (certMet.length() != 1 || !paramChk(regex, certMet)) {
-				errMessage = "본인인증방법 비정상" + certMet;
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[0-9]*";
-			if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) {
-				errMessage = "휴대폰번호 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[A-Z]*";
-			if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) {
-				errMessage = "이동통신사 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[0-9]*";
-			if (birthDay.length() != 8 || !paramChk(regex, birthDay)) {
-				errMessage = "생년월일 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[0-9]*";
-			if (gender.length() != 1 || !paramChk(regex, gender)) {
-				errMessage = "성별 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[0-9]*";
-			if (nation.length() != 1 || !paramChk(regex, nation)) {
-				errMessage = "내/외국인 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[\\sA-Za-z가-�R.,-]*";
-			if (name.length() > 60 || !paramChk(regex, name)) {
-				errMessage = "성명 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[A-Z]*";
-			if (result.length() != 1 || !paramChk(regex, result)) {
-				errMessage = "결과값 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-
-			regex = "[\\sA-Za-z가-?.,-]*";
-			if (M_name.length() != 0) {
-				if (M_name.length() > 60 || !paramChk(regex, M_name)) {
-					errMessage = "미성년자 성명 비정상";
-					return returnPage(model, errMessage, kmcVO);
-				}
-			}
-
-			regex = "[0-9]*";
-			if (M_birthDay.length() != 0) {
-				if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) {
-					errMessage = "미성년자 생년월일  비정상";
-					return returnPage(model, errMessage, kmcVO);
-				}
-			}
-
-			regex = "[0-9]*";
-			if (M_Gender.length() != 0) {
-				if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) {
-					errMessage = "미성년자 성별 비정상";
-					return returnPage(model, errMessage, kmcVO);
-				}
-			}
-
-			regex = "[0-9]*";
-			if (M_nation.length() != 0) {
-				if (M_nation.length() != 1 || !paramChk(regex, M_nation)) {
-					errMessage = "미성년자 내/외국인 비정상";
-					return returnPage(model, errMessage, kmcVO);
-				}
-			}
+			kmcVO = kmcCertChecker.authCertResult(request, response, model);
 
 			// KMC 본인인증 로그
 			AuthCertVO certVO = new AuthCertVO();
src/main/java/itn/let/mjo/pay/service/KmcVO.java
--- src/main/java/itn/let/mjo/pay/service/KmcVO.java
+++ src/main/java/itn/let/mjo/pay/service/KmcVO.java
@@ -18,10 +18,10 @@
 	private String gender		= "";			// 성별
 	private String nation		= "";			// 내국인
 	private String name			= "";			// 성명
-	private String MName		= "";			// 미성년자 성명
-	private String MBirthDay	= "";			// 미성년자 생년월일
-	private String MGender		= "";			// 미성년자 성별
-	private String MNation		= "";			// 미성년자 내외국인
+//	private String MName		= "";			// 미성년자 성명
+//	private String MBirthDay	= "";			// 미성년자 생년월일
+//	private String MGender		= "";			// 미성년자 성별
+//	private String MNation		= "";			// 미성년자 내외국인
 	private String result		= "";			// 결과값
 
 	private String certMet		= "";			// 인증방법
@@ -40,6 +40,11 @@
 	
 	private String idx       = "";				//본인인증 로그 idx
 	private String dnChk       = "";				//본인명의 DN 체크
+	
+	private String reserve1 = "";
+	private String reserve2 = "";
+	private String reserve3 = "";
+	private String reserve4 = "";
 	
 	public String getUserId() {
 		return userId;
@@ -177,30 +182,6 @@
 	public void setCertNum(String certNum) {
 		this.certNum = certNum;
 	}
-	public String getMName() {
-		return MName;
-	}
-	public void setMName(String mName) {
-		MName = mName;
-	}
-	public String getMBirthDay() {
-		return MBirthDay;
-	}
-	public void setMBirthDay(String mBirthDay) {
-		MBirthDay = mBirthDay;
-	}
-	public String getMGender() {
-		return MGender;
-	}
-	public void setMGender(String mGender) {
-		MGender = mGender;
-	}
-	public String getMNation() {
-		return MNation;
-	}
-	public void setMNation(String mNation) {
-		MNation = mNation;
-	}
 	public String getRecCert() {
 		return recCert;
 	}
@@ -225,5 +206,30 @@
 	public void setCertType(String certType) {
 		this.certType = certType;
 	}
+	public String getReserve1() {
+		return reserve1;
+	}
+	public void setReserve1(String reserve1) {
+		this.reserve1 = reserve1;
+	}
+	public String getReserve2() {
+		return reserve2;
+	}
+	public void setReserve2(String reserve2) {
+		this.reserve2 = reserve2;
+	}
+	public String getReserve3() {
+		return reserve3;
+	}
+	public void setReserve3(String reserve3) {
+		this.reserve3 = reserve3;
+	}
+	public String getReserve4() {
+		return reserve4;
+	}
+	public void setReserve4(String reserve4) {
+		this.reserve4 = reserve4;
+	}
+	
 	
 }
src/main/java/itn/let/mjo/pay/web/MjonPayController.java
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
@@ -945,24 +945,10 @@
 				ModelMap model , @RequestParam Map<String, Object> commandMap, 
 				@ModelAttribute("searchVO") KmcVO kmcVO) throws Exception {
 			
+			//kmc 본인인증 결과처리
 			kmcVO = kmcCertChecker.authCertResult(request, response, model);
-			//KMC 본인인증 로그 insert
-			AuthCertVO certVO = new AuthCertVO();
-			certVO.setMberId(kmcVO.getPlusInfo());
-			certVO.setCertNum(kmcVO.getCertNum());
-			certVO.setCertDate(kmcVO.getDate());
-			certVO.setCertDi(kmcVO.getDI());
-			certVO.setCertPhone(kmcVO.getPhoneNo());
-			certVO.setCertNation(kmcVO.getNation());
-			certVO.setCertName(kmcVO.getName());
-			certVO.setCertResult(kmcVO.getResult());
-			certVO.setCertType("KMC_회원가입 인증");
-			certVO.setCertIpaddr(kmcVO.getIp());
-			certVO.setBirthDay(kmcVO.getBirthDay());
-			certVO.setSexdstnCode(kmcVO.getGender());
-
-			//디비 테이블에 저장하기
-			mberManageService.insertCertInfoLog(certVO);
+			//kmc 본인인증 로그 처리
+			AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_회원가입 인증");
 			
 			kmcVO.setIdx(certVO.getIdx()); //본인인증 로그 Idx - 로그 insert 후 idx selectKey
 			model.addAttribute("kmcVO", kmcVO);
@@ -5936,298 +5922,6 @@
   		
   		return p_response;
     }
-    
-    
-    
-    
-    /**
-	 * 회원가입 본인인증
-	 *
-	 * @param 
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping("/web/cop/kmc/authRequestAjax_back.do")
-	public String authRequestAjax_back(HttpServletRequest request, HttpSession session, HttpServletResponse response,
-			ModelMap model , @RequestParam Map<String, Object> commandMap, 
-			@ModelAttribute("searchVO") KmcVO kmcVO) throws Exception {
-		
-		//크롬 SameSite정책 방지 - 도메인이 다른 타사로 이동 시 크롬 정책에 의해 세션 유실이 일어나는 경우가 있는데, 이를 방지하기 위해 samesite 보안을 none처리
-		response.setHeader("Set-Cookie", "mberSession=mberSession; Secure; SameSite=None");
-		
-		System.out.println("++++++++++++ 세션체크 ::: "+ session.getAttribute("mberSession"));
-		
-		String errMessage = ""; //에러메세지
-		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-	    rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
-
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-        certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-        date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-        CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-        phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-        phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-        birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-        gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-        nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-        //07. CI, DI 복호화
-        CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-        DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-        if("Y".equals(result)) {
-        	
-        }
-        
-        //--------------------------------------------------------------
-        String regex = "";
-        if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-        
-		//본인인증 결과 내용 저장하기.
-		/*System.out.println("+++++++++++++ getCertNum ::: "+kmcVO.getCertNum());
-		System.out.println("+++++++++++++ getDate ::: "+kmcVO.getDate());
-		System.out.println("+++++++++++++ getDI ::: "+kmcVO.getDI());
-		System.out.println("+++++++++++++ getPhoneNo ::: "+kmcVO.getPhoneNo());
-		System.out.println("+++++++++++++ getNation ::: "+kmcVO.getNation());
-		System.out.println("+++++++++++++ getName ::: "+kmcVO.getName());
-		System.out.println("+++++++++++++ getResult ::: "+kmcVO.getResult());
-		System.out.println("+++++++++++++ getCertMet ::: "+kmcVO.getCertMet());
-		System.out.println("+++++++++++++ getIp ::: "+kmcVO.getIp());*/
-		
-		//KMC 본인인증 정보를 세션에 담아준다.
-		/*AuthCertVO certVO = new AuthCertVO();
-		certVO.setCertNum(kmcVO.getCertNum());
-		certVO.setCertDate(kmcVO.getDate());
-		certVO.setCertDi(kmcVO.getDI());
-		certVO.setCertPhone(kmcVO.getPhoneNo());
-		certVO.setCertNation(kmcVO.getNation());
-		certVO.setCertName(kmcVO.getName());
-		certVO.setCertResult(kmcVO.getResult());
-		certVO.setCertType("KMC문자인증");
-		certVO.setCertIpaddr(kmcVO.getIp());
-		certVO.setBirthDay(kmcVO.getBirthDay());
-		certVO.setSexdstnCode(kmcVO.getGender());*/
-		
-		/*request.getSession().setAttribute("AuthKmcCertVO", certVO);*/
-		
-		/*System.out.println("++++++++++++ 세션체크22 ::: "+(MberManageVO) session.getAttribute("mberSession"));*/
-		
-		//KMC 본인인증 로그 insert
-		AuthCertVO certVO = new AuthCertVO();
-		certVO.setMberId(kmcVO.getPlusInfo());
-		certVO.setCertNum(kmcVO.getCertNum());
-		certVO.setCertDate(kmcVO.getDate());
-		certVO.setCertDi(kmcVO.getDI());
-		certVO.setCertPhone(kmcVO.getPhoneNo());
-		certVO.setCertNation(kmcVO.getNation());
-		certVO.setCertName(kmcVO.getName());
-		certVO.setCertResult(kmcVO.getResult());
-		certVO.setCertType("KMC_회원가입 인증");
-		certVO.setCertIpaddr(kmcVO.getIp());
-		certVO.setBirthDay(kmcVO.getBirthDay());
-		certVO.setSexdstnCode(kmcVO.getGender());
-
-		//디비 테이블에 저장하기
-		mberManageService.insertCertInfoLog(certVO);
-		
-		kmcVO.setIdx(certVO.getIdx()); //본인인증 로그 Idx - 로그 insert 후 idx selectKey
-		model.addAttribute("kmcVO", kmcVO);
-		return "web/cop/kmc/authRequestAjax";
-	}
-    
-    
-    
-    
-    
-    
-    
     
 }
 
src/main/java/itn/let/uat/uia/service/EgovLoginService.java
--- src/main/java/itn/let/uat/uia/service/EgovLoginService.java
+++ src/main/java/itn/let/uat/uia/service/EgovLoginService.java
@@ -121,5 +121,4 @@
     //비밀번호 실패 횟수 조회
     public LoginVO selectPassMiss(LoginVO vo) throws Exception;
 
-	public KmcVO kmcDecryption(HttpServletRequest request, KmcVO kmcVO);
 }
src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java
--- src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java
+++ src/main/java/itn/let/uat/uia/service/impl/EgovLoginServiceImpl.java
@@ -17,6 +17,7 @@
 import egovframework.rte.psl.dataaccess.util.EgovMap;
 import itn.com.cmm.LoginVO;
 import itn.let.mjo.pay.service.KmcVO;
+import itn.let.uat.uia.service.AuthCertVO;
 import itn.let.uat.uia.service.EgovLoginService;
 import itn.let.uss.umt.service.UserManageVO;
 import itn.let.utl.fcc.service.EgovNumberUtil;
@@ -318,240 +319,6 @@
     	return loginDAO.selectPassMiss(vo);
     }
 
-
-	@Override
-	public KmcVO kmcDecryption(HttpServletRequest request, KmcVO kmcVO) {
-		
-
-		
-		String rec_cert	= request.getParameter("rec_cert").trim();
-		String certNum	= request.getParameter("certNum").trim();
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if (rec_cert.length() == 0 || certNum.length() == 0) {
-			kmcVO.setErrMessage("비정상");
-			return kmcVO;
-		}
-		// 변수선언
-		// --------------------------------------------------------------------------------------------------------
-		String k_certNum = ""; // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-		String date = ""; // 요청일시
-		String CI = ""; // 연계정보(CI)
-		String DI = ""; // 중복가입확인정보(DI)
-		String phoneNo = ""; // 휴대폰번호
-		String phoneCorp = ""; // 이동통신사
-		String birthDay = ""; // 생년월일
-		String gender = ""; // 성별
-		String nation = ""; // 내국인
-		String name = ""; // 성명
-		String M_name = ""; // 미성년자 성명
-		String M_birthDay = ""; // 미성년자 생년월일
-		String M_Gender = ""; // 미성년자 성별
-		String M_nation = ""; // 미성년자 내외국인
-		String result = ""; // 결과값
-
-		String certMet = ""; // 인증방법
-		String ip = ""; // ip주소
-		String plusInfo = "";
-
-		String encPara = "";
-		String encMsg1 = "";
-		String encMsg2 = "";
-		String msgChk = "";
-
-		IcertSecuManager seed = new IcertSecuManager();
-
-		// 02. 1차 복호화
-		// 수신된 certNum를 이용하여 복호화
-		rec_cert = seed.getDec(rec_cert, k_certNum);
-
-		// 03. 1차 파싱
-		int inf1 = rec_cert.indexOf("/", 0);
-		int inf2 = rec_cert.indexOf("/", inf1 + 1);
-
-		encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터
-		encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값
-
-		// 04. 위변조 검증
-		encMsg2 = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-		if (encMsg2.equals(encMsg1)) {
-			msgChk = "Y";
-		}
-
-		if (!"Y".equals(msgChk)) {
-			kmcVO.setErrMessage("비정상접근입니다.");
-			return kmcVO;
-		}
-
-		// 05. 2차 복호화
-		rec_cert = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-		// 06. 2차 파싱
-		int info1 = rec_cert.indexOf("/", 0);
-		int info2 = rec_cert.indexOf("/", info1 + 1);
-		int info3 = rec_cert.indexOf("/", info2 + 1);
-		int info4 = rec_cert.indexOf("/", info3 + 1);
-		int info5 = rec_cert.indexOf("/", info4 + 1);
-		int info6 = rec_cert.indexOf("/", info5 + 1);
-		int info7 = rec_cert.indexOf("/", info6 + 1);
-		int info8 = rec_cert.indexOf("/", info7 + 1);
-		int info9 = rec_cert.indexOf("/", info8 + 1);
-		int info10 = rec_cert.indexOf("/", info9 + 1);
-		int info11 = rec_cert.indexOf("/", info10 + 1);
-		int info12 = rec_cert.indexOf("/", info11 + 1);
-		int info13 = rec_cert.indexOf("/", info12 + 1);
-		int info14 = rec_cert.indexOf("/", info13 + 1);
-		int info15 = rec_cert.indexOf("/", info14 + 1);
-		int info16 = rec_cert.indexOf("/", info15 + 1);
-		int info17 = rec_cert.indexOf("/", info16 + 1);
-		int info18 = rec_cert.indexOf("/", info17 + 1);
-
-		certNum = rec_cert.substring(0, info1);
-		kmcVO.setCertNum(certNum);
-		date = rec_cert.substring(info1 + 1, info2);
-		kmcVO.setDate(date);
-		CI = rec_cert.substring(info2 + 1, info3);
-		kmcVO.setCI(CI);
-		phoneNo = rec_cert.substring(info3 + 1, info4);
-		kmcVO.setPhoneNo(phoneNo);
-		phoneCorp = rec_cert.substring(info4 + 1, info5);
-		kmcVO.setPhoneCorp(phoneCorp);
-		birthDay = rec_cert.substring(info5 + 1, info6);
-		kmcVO.setBirthDay(birthDay);
-		gender = rec_cert.substring(info6 + 1, info7);
-		kmcVO.setGender(gender);
-		nation = rec_cert.substring(info7 + 1, info8);
-		kmcVO.setNation(nation);
-		name = rec_cert.substring(info8 + 1, info9);
-		kmcVO.setName(name);
-		result = rec_cert.substring(info9 + 1, info10);
-		kmcVO.setResult(result);
-		certMet = rec_cert.substring(info10 + 1, info11);
-		kmcVO.setCertMet(certMet);
-		ip = rec_cert.substring(info11 + 1, info12);
-		kmcVO.setIp(ip);
-		M_name = rec_cert.substring(info12 + 1, info13);
-		kmcVO.setMName(M_name);
-		M_birthDay = rec_cert.substring(info13 + 1, info14);
-		kmcVO.setMBirthDay(M_birthDay);
-		M_Gender = rec_cert.substring(info14 + 1, info15);
-		kmcVO.setMGender(M_Gender);
-		M_nation = rec_cert.substring(info15 + 1, info16);
-		kmcVO.setMNation(M_nation);
-		plusInfo = rec_cert.substring(info16 + 1, info17);
-		kmcVO.setPlusInfo(plusInfo);
-		DI = rec_cert.substring(info17 + 1, info18);
-		kmcVO.setDI(DI);
-
-		// 07. CI, DI 복호화
-		CI = seed.getDec(CI, k_certNum);
-		kmcVO.setCI(CI);
-		DI = seed.getDec(DI, k_certNum);
-		kmcVO.setDI(DI);
-
-		if ("Y".equals(result)) {
-
-		}
-
-		// --------------------------------------------------------------
-		String regex = "";
-		if (certNum.length() == 0 || certNum.length() > 40) {
-			kmcVO.setErrMessage("요청번호 비정상.");
-			return kmcVO;
-		}
-
-		regex = "[0-9]*";
-		if (date.length() != 14 || !this.paramChk(regex, date)) {
-			kmcVO.setErrMessage("요청일시");
-			return kmcVO;
-		}
-
-		regex = "[A-Z]*";
-		if (certMet.length() != 1 || !this.paramChk(regex, certMet)) {
-			kmcVO.setErrMessage("본인인증방법 비정상" + certMet);
-			return kmcVO;
-		}
-
-		regex = "[0-9]*";
-		if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !this.paramChk(regex, phoneNo)) {
-			kmcVO.setErrMessage("휴대폰번호 비정상");
-			return kmcVO;
-		}
-
-		regex = "[A-Z]*";
-		if (phoneCorp.length() != 3 || !this.paramChk(regex, phoneCorp)) {
-			kmcVO.setErrMessage("이동통신사 비정상");
-			return kmcVO;
-		}
-
-		regex = "[0-9]*";
-		if (birthDay.length() != 8 || !this.paramChk(regex, birthDay)) {
-			kmcVO.setErrMessage("생년월일 비정상");
-			return kmcVO;
-		}
-
-		regex = "[0-9]*";
-		if (gender.length() != 1 || !this.paramChk(regex, gender)) {
-			kmcVO.setErrMessage("성별 비정상");
-			return kmcVO;
-		}
-
-		regex = "[0-9]*";
-		if (nation.length() != 1 || !this.paramChk(regex, nation)) {
-			kmcVO.setErrMessage("내/외국인 비정상");
-			return kmcVO;
-		}
-
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if (name.length() > 60 || !this.paramChk(regex, name)) {
-			kmcVO.setErrMessage("성명 비정상");
-			return kmcVO;
-		}
-
-		regex = "[A-Z]*";
-		if (result.length() != 1 || !this.paramChk(regex, result)) {
-			kmcVO.setErrMessage("결과값 비정상");
-			return kmcVO;
-		}
-
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if (M_name.length() != 0) {
-			if (M_name.length() > 60 || !this.paramChk(regex, M_name)) {
-				kmcVO.setErrMessage("미성년자 성명 비정상");
-				return kmcVO;
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_birthDay.length() != 0) {
-			if (M_birthDay.length() != 8 || !this.paramChk(regex, M_birthDay)) {
-				kmcVO.setErrMessage("미성년자 생년월일  비정상");
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_Gender.length() != 0) {
-			if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) {
-				kmcVO.setErrMessage("미성년자 성별 비정상");
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_nation.length() != 0) {
-			if (M_nation.length() != 1 || !this.paramChk(regex, M_nation)) {
-				kmcVO.setErrMessage("미성년자 내/외국인 비정상");
-			}
-		}
-
-
-		return kmcVO;
-	}
-	
-	
 	public Boolean paramChk(String patn, String param) {
 		Pattern pattern = Pattern.compile(patn);
 		Matcher matcher = pattern.matcher(param);
src/main/java/itn/let/uat/uia/web/EgovLoginController.java
--- src/main/java/itn/let/uat/uia/web/EgovLoginController.java
+++ src/main/java/itn/let/uat/uia/web/EgovLoginController.java
@@ -253,7 +253,7 @@
 	private CertIpService certIpService;
 	
 	@Resource(name = "KmcCertChecker")
-	private KmcCertChecker kmcCertCheck;
+	private KmcCertChecker kmcCertChecker;
 	
 	
 	private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class);
@@ -336,7 +336,7 @@
 			
 			MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO();
 			mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAjax.do");
-			AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+			AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 			
 			model.addAttribute("tr_cert", certVO.getTr_cert());
 			model.addAttribute("tr_url", certVO.getTr_url());
@@ -385,7 +385,7 @@
 		mberCertPhoneVO.setNation(mberManageVO.getNationality());
 		mberCertPhoneVO.setBirthDay(mberManageVO.getBirth());
 		
-		AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+		AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 
 //		AuthCertVO certVO = kmcCertCheck.authCertCheckTwo(serverNm + "/web/cop/kmc/authRequestAjax.do",
 //				mberManageVO.getMberNm(), mberManageVO.getMoblphonNo(), mberManageVO.getSexdstnCode(),
@@ -4035,7 +4035,7 @@
 	    	}
 			mberCertPhoneVO.setPlusInfo(plusInfo);
 			
-			AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+			AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 			
 			modelAndView.addObject("tr_cert", certVO.getTr_cert());
 			modelAndView.addObject("tr_url", certVO.getTr_url());
@@ -4060,22 +4060,26 @@
 	 */
 
 	@RequestMapping("/web/cop/kmc/authRequestFindIdPwAjax.do")
-	public String authRequestFindIdPwAjax(HttpServletRequest request, ModelMap model,
+	public String authRequestFindIdPwAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model,
 			@RequestParam Map<String, Object> commandMap, @ModelAttribute("searchVO") KmcVO kmcVO,
 			RedirectAttributes redirectAttributes) throws Exception {
 		
-		KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO);
+//		KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO);
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_아이디패스워드찾기");
 		
 		String msg = "";
-		if (!findIdKmcCheck(kmcRVO.getDI(), kmcRVO.getName(), kmcRVO.getPhoneNo())) {
+		if (!findIdKmcCheck(kmcVO.getDI(), kmcVO.getName(), kmcVO.getPhoneNo())) {
 			msg = "일치하는 정보가 없습니다.";
 			redirectAttributes.addFlashAttribute("message", msg);
 			return "redirect:/web/user/findUserId.do";
 		}
 		
-		kmcRVO.setCertType("KMC_아이디패스워드찾기");
-		// 디비 테이블에 저장하기
-		mberManageService.insertCertInfoLogBn(kmcRVO);
+//		kmcRVO.setCertType("KMC_아이디패스워드찾기");
+//		// 디비 테이블에 저장하기
+//		mberManageService.insertCertInfoLogBn(kmcRVO);
 
 		model.addAttribute("kmcVO", kmcVO);
 		return "web/login/findUserIdKmcReqPage";
@@ -4092,18 +4096,24 @@
 	 * @discription 관리자 로그인 DN 값 최초 등록
 	 */
 	@RequestMapping("/web/cop/kmc/authRequestSelfLoginAjax.do")
-	public String authRequestSelfLoginAjax(HttpServletRequest request, ModelMap model,
+	public String authRequestSelfLoginAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model,
 			@RequestParam Map<String, Object> commandMap, @ModelAttribute("searchVO") KmcVO kmcVO,
 			RedirectAttributes redirectAttributes, HttpSession session) throws Exception {
 
 		UserManageVO userManageVO = new UserManageVO();
 		
-		KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO);
+//		KmcVO kmcRVO = loginService.kmcDecryption(request, kmcVO);
+		
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_아이디패스워드찾기");
+		
 
-		userManageVO.setCrtfcDnValue(kmcRVO.getDI());
-		userManageVO.setEmplyrNm(kmcRVO.getName());
-		userManageVO.setEmplyrId(kmcRVO.getPlusInfo().split(",,,")[0]);
-		userManageVO.setPassword(kmcRVO.getPlusInfo().split(",,,")[1]);
+		userManageVO.setCrtfcDnValue(kmcVO.getDI());
+		userManageVO.setEmplyrNm(kmcVO.getName());
+		userManageVO.setEmplyrId(kmcVO.getPlusInfo().split(",,,")[0]);
+		userManageVO.setPassword(kmcVO.getPlusInfo().split(",,,")[1]);
 		
 		userManageService.updateCrtfcDnValue(userManageVO);
 		
@@ -4121,20 +4131,20 @@
 			e.printStackTrace();
 			// TODO: handle exception
 		}
-		kmcRVO.setCertType("KMC_관리자미인증IP접속인증");
-		// 디비 테이블에 저장하기
-		
-		try {
-			mberManageService.insertCertInfoLogBn(kmcRVO);
-			
-		}  catch (Exception e) {
-			System.out.println("!!!!!!!!!!!!!!!!!");
-			e.printStackTrace();
-			// TODO: handle exception
-		}
+//		kmcRVO.setCertType("KMC_관리자미인증IP접속인증");
+//		// 디비 테이블에 저장하기
+//		
+//		try {
+//			mberManageService.insertCertInfoLogBn(kmcRVO);
+//			
+//		}  catch (Exception e) {
+//			System.out.println("!!!!!!!!!!!!!!!!!");
+//			e.printStackTrace();
+//			// TODO: handle exception
+//		}
 		
 		
-		model.addAttribute("kmcVO", kmcRVO);
+		model.addAttribute("kmcVO", kmcVO);
 		
 		System.out.println("======================================");
 		model.addAttribute("userManageVO", userManageVO);
@@ -5425,7 +5435,7 @@
 			mberCertPhoneVO.setNation(KMCInfoVO.getNationality());
 			mberCertPhoneVO.setPlusInfo(loginVO.getId());
 			
-			AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+			AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 
 			modelAndView.addObject("tr_cert", certVO.getTr_cert());
 			modelAndView.addObject("tr_url", certVO.getTr_url());
@@ -5446,245 +5456,19 @@
 	 * 
 	 */
 	@RequestMapping("/web/cop/kmc/insertIPAjax.do")
-	public String insertIPAjax(HttpServletRequest request, ModelMap model, @RequestParam Map<String, Object> commandMap,
+	public String insertIPAjax(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map<String, Object> commandMap,
 			@ModelAttribute("searchVO") KmcVO kmcVO) throws Exception {
 
-		String errMessage = ""; // 에러메세지
-
-		String rec_cert = ""; // 결과값(암호화)
-		String certNum = ""; // certNum
-
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum = request.getParameter("certNum").trim();
-
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if (rec_cert.length() == 0 || certNum.length() == 0) {
-			errMessage = "비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		// 변수선언
-		// --------------------------------------------------------------------------------------------------------
-		String k_certNum = ""; // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-		String date = ""; // 요청일시
-		String CI = ""; // 연계정보(CI)
-		String DI = ""; // 중복가입확인정보(DI)
-		String phoneNo = ""; // 휴대폰번호
-		String phoneCorp = ""; // 이동통신사
-		String birthDay = ""; // 생년월일
-		String gender = ""; // 성별
-		String nation = ""; // 내국인
-		String name = ""; // 성명
-		String M_name = ""; // 미성년자 성명
-		String M_birthDay = ""; // 미성년자 생년월일
-		String M_Gender = ""; // 미성년자 성별
-		String M_nation = ""; // 미성년자 내외국인
-		String result = ""; // 결과값
-
-		String certMet = ""; // 인증방법
-		String ip = ""; // ip주소
-		String plusInfo = "";
-
-		String encPara = "";
-		String encMsg1 = "";
-		String encMsg2 = "";
-		String msgChk = "";
-
-		com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-
-		// 02. 1차 복호화
-		// 수신된 certNum를 이용하여 복호화
-		rec_cert = seed.getDec(rec_cert, k_certNum);
-
-		// 03. 1차 파싱
-		int inf1 = rec_cert.indexOf("/", 0);
-		int inf2 = rec_cert.indexOf("/", inf1 + 1);
-
-		encPara = rec_cert.substring(0, inf1); // 암호화된 통합 파라미터
-		encMsg1 = rec_cert.substring(inf1 + 1, inf2); // 암호화된 통합 파라미터의 Hash값
-
-		// 04. 위변조 검증
-		encMsg2 = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-		if (encMsg2.equals(encMsg1)) {
-			msgChk = "Y";
-		}
-
-		if (!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		// 05. 2차 복호화
-		rec_cert = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-		// 06. 2차 파싱
-		int info1 = rec_cert.indexOf("/", 0);
-		int info2 = rec_cert.indexOf("/", info1 + 1);
-		int info3 = rec_cert.indexOf("/", info2 + 1);
-		int info4 = rec_cert.indexOf("/", info3 + 1);
-		int info5 = rec_cert.indexOf("/", info4 + 1);
-		int info6 = rec_cert.indexOf("/", info5 + 1);
-		int info7 = rec_cert.indexOf("/", info6 + 1);
-		int info8 = rec_cert.indexOf("/", info7 + 1);
-		int info9 = rec_cert.indexOf("/", info8 + 1);
-		int info10 = rec_cert.indexOf("/", info9 + 1);
-		int info11 = rec_cert.indexOf("/", info10 + 1);
-		int info12 = rec_cert.indexOf("/", info11 + 1);
-		int info13 = rec_cert.indexOf("/", info12 + 1);
-		int info14 = rec_cert.indexOf("/", info13 + 1);
-		int info15 = rec_cert.indexOf("/", info14 + 1);
-		int info16 = rec_cert.indexOf("/", info15 + 1);
-		int info17 = rec_cert.indexOf("/", info16 + 1);
-		int info18 = rec_cert.indexOf("/", info17 + 1);
-
-		certNum = rec_cert.substring(0, info1);
-		kmcVO.setCertNum(certNum);
-		date = rec_cert.substring(info1 + 1, info2);
-		kmcVO.setDate(date);
-		CI = rec_cert.substring(info2 + 1, info3);
-		kmcVO.setCI(CI);
-		phoneNo = rec_cert.substring(info3 + 1, info4);
-		kmcVO.setPhoneNo(phoneNo);
-		phoneCorp = rec_cert.substring(info4 + 1, info5);
-		kmcVO.setPhoneCorp(phoneCorp);
-		birthDay = rec_cert.substring(info5 + 1, info6);
-		kmcVO.setBirthDay(birthDay);
-		gender = rec_cert.substring(info6 + 1, info7);
-		kmcVO.setGender(gender);
-		nation = rec_cert.substring(info7 + 1, info8);
-		kmcVO.setNation(nation);
-		name = rec_cert.substring(info8 + 1, info9);
-		kmcVO.setName(name);
-		result = rec_cert.substring(info9 + 1, info10);
-		kmcVO.setResult(result);
-		certMet = rec_cert.substring(info10 + 1, info11);
-		kmcVO.setCertMet(certMet);
-		ip = rec_cert.substring(info11 + 1, info12);
-		kmcVO.setIp(ip);
-		M_name = rec_cert.substring(info12 + 1, info13);
-		kmcVO.setMName(M_name);
-		M_birthDay = rec_cert.substring(info13 + 1, info14);
-		kmcVO.setMBirthDay(M_birthDay);
-		M_Gender = rec_cert.substring(info14 + 1, info15);
-		kmcVO.setMGender(M_Gender);
-		M_nation = rec_cert.substring(info15 + 1, info16);
-		kmcVO.setMNation(M_nation);
-		plusInfo = rec_cert.substring(info16 + 1, info17);
-		kmcVO.setPlusInfo(plusInfo);
-		DI = rec_cert.substring(info17 + 1, info18);
-		kmcVO.setDI(DI);
-
-		// 07. CI, DI 복호화
-		CI = seed.getDec(CI, k_certNum);
-		kmcVO.setCI(CI);
-		DI = seed.getDec(DI, k_certNum);
-		kmcVO.setDI(DI);
-
-		if ("Y".equals(result)) {
-
-		}
-
-		// --------------------------------------------------------------
-		String regex = "";
-		if (certNum.length() == 0 || certNum.length() > 40) {
-			errMessage = "요청번호 비정상.";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[0-9]*";
-		if (date.length() != 14 || !paramChk(regex, date)) {
-			errMessage = "요청일시";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[A-Z]*";
-		if (certMet.length() != 1 || !paramChk(regex, certMet)) {
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[0-9]*";
-		if ((phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo)) {
-			errMessage = "휴대폰번호 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[A-Z]*";
-		if (phoneCorp.length() != 3 || !paramChk(regex, phoneCorp)) {
-			errMessage = "이동통신사 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[0-9]*";
-		if (birthDay.length() != 8 || !paramChk(regex, birthDay)) {
-			errMessage = "생년월일 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[0-9]*";
-		if (gender.length() != 1 || !paramChk(regex, gender)) {
-			errMessage = "성별 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[0-9]*";
-		if (nation.length() != 1 || !paramChk(regex, nation)) {
-			errMessage = "내/외국인 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if (name.length() > 60 || !paramChk(regex, name)) {
-			errMessage = "성명 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[A-Z]*";
-		if (result.length() != 1 || !paramChk(regex, result)) {
-			errMessage = "결과값 비정상";
-			return returnPage(model, errMessage, kmcVO);
-		}
-
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if (M_name.length() != 0) {
-			if (M_name.length() > 60 || !paramChk(regex, M_name)) {
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_birthDay.length() != 0) {
-			if (M_birthDay.length() != 8 || !paramChk(regex, M_birthDay)) {
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_Gender.length() != 0) {
-			if (M_Gender.length() != 1 || !paramChk(regex, M_Gender)) {
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-		}
-
-		regex = "[0-9]*";
-		if (M_nation.length() != 0) {
-			if (M_nation.length() != 1 || !paramChk(regex, M_nation)) {
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model, errMessage, kmcVO);
-			}
-		}
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "IP등록");
+		
 		LoginVO loginVO = new LoginVO();
-		loginVO.setId(plusInfo);
+		loginVO.setId(kmcVO.getPlusInfo());
+		
 		loginVO = loginService.selectKMCInfo(loginVO);
-		String userIp = EgovClntInfo.getClntIP(request);
-		loginVO.setIp(ip);
+		loginVO.setIp(kmcVO.getIp());
 
 		loginService.insertMberIp(loginVO);
 
src/main/java/itn/let/uat/uia/web/EgovMypageController.java
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
@@ -183,7 +183,7 @@
 	private CertIpService certIpService;
 	
 	@Resource(name = "KmcCertChecker")
-	private KmcCertChecker kmcCertCheck;
+	private KmcCertChecker kmcCertChecker;
 	
 	/**
 	 * 마이페이지 비밀번호 변경 탭
@@ -717,7 +717,7 @@
 	*/
 	@RequestMapping("/web/user/selectKmcMberInfoAjax.do")
 	public String selectKmcMberInfoAjax(
-		HttpServletRequest request, ModelMap model  
+		HttpServletRequest request, HttpServletResponse response, ModelMap model  
 		, @RequestParam Map<String, Object> commandMap
 		, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
 			
@@ -726,241 +726,14 @@
 		String mblDn = userManageService.selectUserMblDnById(loginVO.getId());
 		model.addAttribute("loginVO", loginVO);
 		
-		String errMessage = ""; //에러메세지
-		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
-
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-		certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-		date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-		CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-		phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-		phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-		birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-		gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-		nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-		//07. CI, DI 복호화
-		CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-		DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-		if("Y".equals(result)) {
-			
-		}
-		
-		//--------------------------------------------------------------
-		String regex = "";
-		if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		
-		//KMC 본인인증 로그
-		AuthCertVO certVO = new AuthCertVO();
-		certVO.setMberId(kmcVO.getPlusInfo());
-		certVO.setCertNum(kmcVO.getCertNum());
-		certVO.setCertDate(kmcVO.getDate());
-		certVO.setCertDi(kmcVO.getDI());
-		certVO.setCertPhone(kmcVO.getPhoneNo());
-		certVO.setCertNation(kmcVO.getNation());
-		certVO.setCertName(kmcVO.getName());
-		certVO.setCertResult(kmcVO.getResult());
-		certVO.setCertType("KMC_회원정보 변경");
-		certVO.setCertIpaddr(kmcVO.getIp());
-		certVO.setBirthDay(kmcVO.getBirthDay());
-		certVO.setSexdstnCode(kmcVO.getGender());
-
-		//디비 테이블에 저장하기
-		mberManageService.insertCertInfoLog(certVO);
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_회원정보 변경");		
 		
 		//개인회원일 시 기존 DN가 본인인증 DN비고하여 본인 명의만 번호 변경 가능하게
 		if("p".equals(loginVO.getDept())) {
-			if(!mblDn.equals(DI)) {
+			if(!mblDn.equals(kmcVO.getDI())) {
 				kmcVO.setDnChk("N");
 			}
 		}
@@ -1465,7 +1238,7 @@
 				mberCertPhoneVO.setTrUrl("/web/user/selectKmcMberInfoAjax.do");
 				mberCertPhoneVO.setPlusInfo(loginVO.getId());
 				
-				AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+				AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 				modelAndView.addObject("certVO", certVO);
 			}
 			
@@ -1938,7 +1711,7 @@
 					mberCertPhoneVO.setPhoneNo(mjonMsgVO.getCallFrom());
 					mberCertPhoneVO.setPlusInfo(mjonMsgVO.getUserId()+ "§" + mjonMsgVO.getMyNameFlag());
 					
-					AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+					AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 					
 					modelAndView.addObject("certVO", certVO);
 					
@@ -1962,223 +1735,12 @@
 	*/
 	@RequestMapping("/web/user/selectPhoneNumberCertChkAjax.do")
 	public String selectPhoneNumberCertChk(
-		HttpServletRequest request, ModelMap model  
+		HttpServletRequest request, HttpServletResponse response, ModelMap model  
 		, @RequestParam Map<String, Object> commandMap
 		, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
-			
-		String errMessage = ""; //에러메세지
-		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
 
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		IcertSecuManager seed = new IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-		certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-		date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-		CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-		phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-		phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-		birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-		gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-		nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-		//07. CI, DI 복호화
-		CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-		DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-		if("Y".equals(result)) {
-			
-		}
-		
-		//--------------------------------------------------------------
-		String regex = "";
-		if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
 		/*
 		 * plusInfo(본인인증 추가파라미터)
 		 * 구분지 "§"
@@ -2188,32 +1750,17 @@
 		 * */
 		String tmp = kmcVO.getPlusInfo();
 		String[] tmpResult = tmp.split("§");
+		kmcVO.setPlusInfo(tmpResult[0]);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "KMC_발신번호 등록 인증");	
 		
-		//KMC 본인인증 로그
-		AuthCertVO certVO = new AuthCertVO();
-		
-		certVO.setMberId(tmpResult[0]);
-		certVO.setCertNum(kmcVO.getCertNum());
-		certVO.setCertDate(kmcVO.getDate());
-		certVO.setCertDi(kmcVO.getDI());
-		certVO.setCertPhone(kmcVO.getPhoneNo());
-		certVO.setCertNation(kmcVO.getNation());
-		certVO.setCertName(kmcVO.getName());
-		certVO.setCertResult(kmcVO.getResult());
-		certVO.setCertType("KMC_발신번호 등록 인증");
-		certVO.setCertIpaddr(kmcVO.getIp());
-		certVO.setBirthDay(kmcVO.getBirthDay());
-		certVO.setSexdstnCode(kmcVO.getGender());
-
-		//디비 테이블에 저장하기
-		mberManageService.insertCertInfoLog(certVO);
 		
 		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
 		
 		String mblDn = userManageService.selectUserMblDnById(loginVO.getId());
 		
 		String resultDnFlag = "N";
-		if(DI.equals(mblDn)) {
+		if((kmcVO.getDI()).equals(mblDn)) {
 			resultDnFlag = "Y";
 		}
 		
@@ -2295,14 +1842,8 @@
 		model.addAttribute("resultNameChk", resultNameChk);
 		//=======================끝=========================
 		
-		String birthDay_tmp = "";
-		try {
-			birthDay_tmp = kmcVO.getMBirthDay().length() != 0 ? kmcVO.getMBirthDay() : kmcVO.getBirthDay();
-		} catch (Exception e) {
-			birthDay_tmp = birthDay;
-		}
 		model.addAttribute("CI", kmcVO.getCI());
-		model.addAttribute("birthDay", birthDay_tmp);
+		model.addAttribute("birthDay", kmcVO.getBirthDay());
 		
 		return "web/user/selectPhoneNumberCertChkReq";
 	}
@@ -2326,232 +1867,25 @@
 	*/
 	@RequestMapping("/web/user/insertPhoneSendNumber.do")
 	public String insertPhoneSendNumber(
-		HttpServletRequest request, ModelMap model  
+		HttpServletRequest request, HttpServletResponse response, ModelMap model  
 		, @RequestParam Map<String, Object> commandMap
 		, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
-			
-		String errMessage = ""; //에러메세지
+
 		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
-
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		IcertSecuManager seed = new IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-		certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-		date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-		CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-		phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-		phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-		birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-		gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-		nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-		//07. CI, DI 복호화
-		CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-		DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-		if("Y".equals(result)) {
-			
-		}
-		
-		//--------------------------------------------------------------
-		String regex = "";
-		if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "휴대폰 인증 발신번호 등록");
 		
 		MjPhoneMemberVO mjPhoneMemberVO = new MjPhoneMemberVO();
 		
-		mjPhoneMemberVO.setUserId(plusInfo);
+		mjPhoneMemberVO.setUserId(kmcVO.getPlusInfo());
 		mjPhoneMemberVO.setPhmType("01");
 		mjPhoneMemberVO.setPhmAuthType("01");
-		mjPhoneMemberVO.setFrstRegisterId(plusInfo);
-		mjPhoneMemberVO.setLastUpdusrId(plusInfo);
-		mjPhoneMemberVO.setPhoneNumber(phoneNo);
-		mjPhoneMemberVO.setUserName(name);
+		mjPhoneMemberVO.setFrstRegisterId(kmcVO.getPlusInfo());
+		mjPhoneMemberVO.setLastUpdusrId(kmcVO.getPlusInfo());
+		mjPhoneMemberVO.setPhoneNumber(kmcVO.getPhoneNo());
+		mjPhoneMemberVO.setUserName(kmcVO.getName());
 		mjPhoneMemberVO.setAuthYn("Y");
 		mjonMsgService.insertSendNumber(mjPhoneMemberVO);
 		
@@ -2953,7 +2287,7 @@
 		mberCertPhoneVO.setTrUrl("/web/user/selectMberSecessionAjax.do");
 		mberCertPhoneVO.setName(name);
 		
-		AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+		AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 		model.addAttribute("certVO", certVO);
 		
 		return "web/user/mberSecession";
@@ -3054,7 +2388,7 @@
 				mberCertPhoneVO.setTrUrl("/web/user/selectSecurityAuthn.do");
 				mberCertPhoneVO.setPlusInfo(loginVO.getId());
 				
-				AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request);
+				AuthCertVO certVO = kmcCertChecker.authCertCheck(mberCertPhoneVO, request);
 				
 				model.addAttribute("certVO", certVO);
 			}
@@ -3132,232 +2466,24 @@
 	*/
 	@RequestMapping("/web/user/selectMberSecessionAjax.do")
 	public String selectMberSecessionAjax(
-		HttpServletRequest request, ModelMap model  
+		HttpServletRequest request, HttpServletResponse response, ModelMap model  
 		, @RequestParam Map<String, Object> commandMap
 		, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
 			
-		String errMessage = ""; //에러메세지
-		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
-
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-		certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-		date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-		CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-		phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-		phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-		birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-		gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-		nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-		//07. CI, DI 복호화
-		CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-		DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-		if("Y".equals(result)) {
-			
-		}
-		
-		//--------------------------------------------------------------
-		String regex = "";
-		if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "회원탈퇴 본인인증");
 		
 		MjPhoneMemberVO mjPhoneMemberVO = new MjPhoneMemberVO();
 		
-		mjPhoneMemberVO.setUserId(plusInfo);
+		mjPhoneMemberVO.setUserId(kmcVO.getPlusInfo());
 		mjPhoneMemberVO.setPhmType("01");
 		mjPhoneMemberVO.setPhmAuthType("01");
-		mjPhoneMemberVO.setFrstRegisterId(plusInfo);
-		mjPhoneMemberVO.setLastUpdusrId(plusInfo);
-		mjPhoneMemberVO.setPhoneNumber(phoneNo);
-		mjPhoneMemberVO.setUserName(name);
+		mjPhoneMemberVO.setFrstRegisterId(kmcVO.getPlusInfo());
+		mjPhoneMemberVO.setLastUpdusrId(kmcVO.getPlusInfo());
+		mjPhoneMemberVO.setPhoneNumber(kmcVO.getPhoneNo());
+		mjPhoneMemberVO.setUserName(kmcVO.getName());
 		mjPhoneMemberVO.setAuthYn("Y");
 		mjonMsgService.insertSendNumber(mjPhoneMemberVO);
 		
@@ -3662,7 +2788,7 @@
 	*/
 	@RequestMapping("/web/user/selectSecurityAuthn.do")
 	public String selectSecurityAuthn(
-		HttpServletRequest request, ModelMap model  
+		HttpServletRequest request, HttpServletResponse response, ModelMap model  
 		, @RequestParam Map<String, Object> commandMap
 		, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
 			
@@ -3671,243 +2797,13 @@
 		String mblDn = userManageService.selectUserMblDnById(loginVO.getId());
 		model.addAttribute("loginVO", loginVO);
 		
-		String errMessage = ""; //에러메세지
-		
-		String rec_cert      = "";  // 결과값(암호화)
-		String certNum       = "";  // certNum
-		
-		rec_cert = request.getParameter("rec_cert").trim();
-		certNum  = request.getParameter("certNum").trim(); 
-		
-		kmcVO.setRecCert(rec_cert);
-		kmcVO.setCertNum(certNum);
-		// 파라미터 유효성 검증
-		if( rec_cert.length() == 0 || certNum.length() == 0 ){
-			errMessage = "비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		
-		// 변수선언 --------------------------------------------------------------------------------------------------------
-		String k_certNum = "";			    // 파라미터로 수신한 요청번호
-		k_certNum = certNum;
-	    String date			= "";			// 요청일시
-		String CI	    	= "";			// 연계정보(CI)
-		String DI	    	= "";			// 중복가입확인정보(DI)
-	    String phoneNo		= "";			// 휴대폰번호
-		String phoneCorp	= "";			// 이동통신사
-		String birthDay		= "";			// 생년월일
-		String gender		= "";			// 성별
-		String nation		= "";			// 내국인
-		String name			= "";			// 성명
-		String M_name		= "";			// 미성년자 성명
-		String M_birthDay	= "";			// 미성년자 생년월일
-		String M_Gender		= "";			// 미성년자 성별
-		String M_nation		= "";			// 미성년자 내외국인
-	    String result		= "";			// 결과값
-
-	    String certMet		= "";			// 인증방법
-	    String ip			= "";			// ip주소
-		String plusInfo		= "";
-
-		String encPara		= "";
-		String encMsg1		= ""; 
-		String encMsg2		= "";
-		String msgChk       = "";
-		
-		com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
-		 
-		//02. 1차 복호화
-        //수신된 certNum를 이용하여 복호화
-        rec_cert  = seed.getDec(rec_cert, k_certNum);
-
-        //03. 1차 파싱
-        int inf1 = rec_cert.indexOf("/",0);
-        int inf2 = rec_cert.indexOf("/",inf1+1);
-
-		encPara  = rec_cert.substring(0,inf1);         //암호화된 통합 파라미터
-        encMsg1  = rec_cert.substring(inf1+1,inf2);    //암호화된 통합 파라미터의 Hash값
-
-		//04. 위변조 검증
-		encMsg2  = seed.getMsg(encPara);
-		kmcVO.setEncMsg2(encMsg2);
-        if(encMsg2.equals(encMsg1)){
-            msgChk="Y";
-        }
-        
-		if(!"Y".equals(msgChk)) {
-			errMessage = "비정상접근입니다.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		 //05. 2차 복호화
-		rec_cert  = seed.getDec(encPara, k_certNum);
-		kmcVO.setRecCert(rec_cert);
-        //06. 2차 파싱
-        int info1  = rec_cert.indexOf("/",0);
-        int info2  = rec_cert.indexOf("/",info1+1);
-        int info3  = rec_cert.indexOf("/",info2+1);
-        int info4  = rec_cert.indexOf("/",info3+1);
-        int info5  = rec_cert.indexOf("/",info4+1);
-        int info6  = rec_cert.indexOf("/",info5+1);
-        int info7  = rec_cert.indexOf("/",info6+1);
-        int info8  = rec_cert.indexOf("/",info7+1);
-		int info9  = rec_cert.indexOf("/",info8+1);
-		int info10 = rec_cert.indexOf("/",info9+1);
-		int info11 = rec_cert.indexOf("/",info10+1);
-		int info12 = rec_cert.indexOf("/",info11+1);
-		int info13 = rec_cert.indexOf("/",info12+1);
-		int info14 = rec_cert.indexOf("/",info13+1);
-		int info15 = rec_cert.indexOf("/",info14+1);
-		int info16 = rec_cert.indexOf("/",info15+1);
-		int info17 = rec_cert.indexOf("/",info16+1);
-		int info18 = rec_cert.indexOf("/",info17+1);
-
-		certNum		= rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
-		date		= rec_cert.substring(info1+1,info2); kmcVO.setDate(date); 
-		CI			= rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
-		phoneNo		= rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
-		phoneCorp	= rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
-		birthDay	= rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
-		gender		= rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
-		nation		= rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
-		name		= rec_cert.substring(info8+1,info9); kmcVO.setName(name);
-		result		= rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
-		certMet		= rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
-		ip			= rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
-		M_name		= rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
-		M_birthDay	= rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
-		M_Gender	= rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
-		M_nation	= rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
-		plusInfo	= rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
-		DI      	= rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
-
-		//07. CI, DI 복호화
-		CI  = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
-		DI  = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
-		
-		if("Y".equals(result)) {
-			
-		}
-		
-		//--------------------------------------------------------------
-		String regex = "";
-		if( certNum.length() == 0 || certNum.length() > 40){
-			errMessage = "요청번호 비정상.";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( date.length() != 14 || !paramChk(regex, date) ){
-			errMessage = "요청일시";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[A-Z]*";
-		if( certMet.length() != 1 || !paramChk(regex, certMet) ){
-			errMessage = "본인인증방법 비정상" + certMet;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-
-		regex = "[0-9]*";
-		if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
-			errMessage = "휴대폰번호 비정상" ;
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
-			errMessage = "이동통신사 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
-			errMessage = "생년월일 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( gender.length() != 1 || !paramChk(regex, gender) ){
-			errMessage = "성별 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-
-		regex = "[0-9]*";
-		if( nation.length() != 1 || !paramChk(regex, nation) ){
-			errMessage = "내/외국인 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-�R.,-]*";
-		if( name.length() > 60 || !paramChk(regex, name) ){
-			errMessage = "성명 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[A-Z]*";
-		if( result.length() != 1 || !paramChk(regex, result) ){
-			errMessage = "결과값 비정상";
-			return returnPage(model , errMessage , kmcVO) ;
-		}
-		
-		regex = "[\\sA-Za-z가-?.,-]*";
-		if( M_name.length() != 0 ){
-			if( M_name.length() > 60 || !paramChk(regex, M_name) ){
-				errMessage = "미성년자 성명 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		regex = "[0-9]*";
-		if( M_birthDay.length() != 0 ){
-			if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
-				errMessage = "미성년자 생년월일  비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_Gender.length() != 0 ){
-			if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
-				errMessage = "미성년자 성별 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-
-		regex = "[0-9]*";
-		if( M_nation.length() != 0 ){
-			if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
-				errMessage = "미성년자 내/외국인 비정상";
-				return returnPage(model , errMessage , kmcVO) ;
-			}
-		}
-		
-		
-		//KMC 본인인증 로그
-		AuthCertVO certVO = new AuthCertVO();
-		certVO.setMberId(kmcVO.getPlusInfo());
-		certVO.setCertNum(kmcVO.getCertNum());
-		certVO.setCertDate(kmcVO.getDate());
-		certVO.setCertDi(kmcVO.getDI());
-		certVO.setCertPhone(kmcVO.getPhoneNo());
-		certVO.setCertNation(kmcVO.getNation());
-		certVO.setCertName(kmcVO.getName());
-		certVO.setCertResult(kmcVO.getResult());
-		certVO.setCertType("secureLoginOFF");
-		certVO.setCertIpaddr(kmcVO.getIp());
-		certVO.setBirthDay(kmcVO.getBirthDay());
-		certVO.setSexdstnCode(kmcVO.getGender());
-
-
-		//디비 테이블에 저장하기
-		mberManageService.insertCertInfoLog(certVO);
-		
-		
+		//kmc 본인인증 결과처리
+		kmcVO = kmcCertChecker.authCertResult(request, response, model);
+		//kmc 본인인증 로그 처리
+		AuthCertVO certVO = kmcCertChecker.insertCertLog(kmcVO, "secureLoginOFF");
 		
 		//본인 명의만 번호 변경 가능하게
-		if(mblDn.equals(DI)) {
+		if(mblDn.equals(kmcVO.getDI())) {
 			String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
 			MberManageVO mberManageVO = new MberManageVO();
 			mberManageVO.setSecuLoginFlag("N");
src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
--- src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
+++ src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
@@ -29,12 +29,16 @@
 import itn.let.cert.phone.service.MberCertPhoneVO;
 import itn.let.mjo.pay.service.KmcVO;
 import itn.let.uat.uia.service.AuthCertVO;
+import itn.let.uss.umt.service.EgovMberManageService;
 
 @Component("KmcCertChecker")
 public class KmcCertChecker {
 	
 	@Resource(name = "CertPhoneService")
 	private CertPhoneService certPhoneService;
+	
+	@Resource(name = "mberManageService")
+	private EgovMberManageService mberManageService;
 
 	//회원가입 시 인증수단을 휴대폰 본인인증만 했을 경우 사용
 	public AuthCertVO authCertCheck(
@@ -80,8 +84,8 @@
 
 		//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
 		String enc_tr_cert = "";
-//		tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
-		tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"///////"+ plusInfo +"/"+ extendVar;
+		tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
+//		tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"///////"+ plusInfo +"/"+ extendVar;
 		enc_tr_cert        = seed.getEnc(tr_cert, "");
 
 		//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
@@ -299,7 +303,7 @@
 			}
 			
 			//02. 1차 복호화
-	        rec_cert  = seed.getDec(rec_cert, k_certNum);
+	        rec_cert  = seed.getDec(rec_cert, "");
 
 	        //03. 1차 파싱
 	        int inf1 = rec_cert.indexOf("/",0);
@@ -343,28 +347,30 @@
 			int info17 = rec_cert.indexOf("/",info16+1);
 			int info18 = rec_cert.indexOf("/",info17+1);
 
-	        certNum		= rec_cert.substring(0,info1);
-	        date		= rec_cert.substring(info1+1,info2);
-	        CI			= rec_cert.substring(info2+1,info3);
-	        phoneNo		= rec_cert.substring(info3+1,info4);
-	        phoneCorp	= rec_cert.substring(info4+1,info5);
-	        birth		= rec_cert.substring(info5+1,info6);
-	        gender		= rec_cert.substring(info6+1,info7);
-	        nation		= rec_cert.substring(info7+1,info8);
-			name		= rec_cert.substring(info8+1,info9);
-			result		= rec_cert.substring(info9+1,info10);
-			certMet		= rec_cert.substring(info10+1,info11);
-			ip			= rec_cert.substring(info11+1,info12);
-			reserve1	= rec_cert.substring(info12+1,info13);
-			reserve2	= rec_cert.substring(info13+1,info14);
-			reserve3	= rec_cert.substring(info14+1,info15);
-			reserve4	= rec_cert.substring(info15+1,info16);
-			plusInfo	= rec_cert.substring(info16+1,info17);
-			DI      	= rec_cert.substring(info17+1,info18);
+	        kmcVO.setCertNum	(rec_cert.substring(0,info1));
+	        kmcVO.setDate		(rec_cert.substring(info1+1,info2));
+	        //CI 복호화
+	        kmcVO.setCI			(seed.getDec(rec_cert.substring(info2+1,info3), ""));
+	        kmcVO.setPhoneNo	(rec_cert.substring(info3+1,info4));
+	        kmcVO.setPhoneCorp	(rec_cert.substring(info4+1,info5));
+	        kmcVO.setBirthDay	(rec_cert.substring(info5+1,info6));
+	        kmcVO.setGender		(rec_cert.substring(info6+1,info7));
+	        kmcVO.setNation		(rec_cert.substring(info7+1,info8));
+			kmcVO.setName		(rec_cert.substring(info8+1,info9));
+			kmcVO.setResult		(rec_cert.substring(info9+1,info10));
+			kmcVO.setCertMet	(rec_cert.substring(info10+1,info11));
+			kmcVO.setIp			(rec_cert.substring(info11+1,info12));
+			kmcVO.setReserve1	(rec_cert.substring(info12+1,info13));
+			kmcVO.setReserve2	(rec_cert.substring(info13+1,info14));
+			kmcVO.setReserve3	(rec_cert.substring(info14+1,info15));
+			kmcVO.setReserve4	(rec_cert.substring(info15+1,info16));
+			kmcVO.setPlusInfo	(rec_cert.substring(info16+1,info17));
+			//DI 복호화
+			kmcVO.setDI      	(seed.getDec(rec_cert.substring(info17+1,info18), ""));
 
 	        //07. CI, DI 복호화
-	        CI  = seed.getDec(CI, "");
-	        DI  = seed.getDec(DI, "");
+//	        CI  = seed.getDec(CI, "");
+//	        DI  = seed.getDec(DI, "");
 	        
 	     // ----------------------------------------------------------------------------------
 
@@ -386,7 +392,27 @@
 		return kmcVO;
 	}
 	
-	
+	public AuthCertVO insertCertLog(KmcVO kmcVO, String msg) throws Exception {
+		//KMC 본인인증 로그 insert
+		AuthCertVO certVO = new AuthCertVO();
+		certVO.setMberId(kmcVO.getPlusInfo());
+		certVO.setCertNum(kmcVO.getCertNum());
+		certVO.setCertDate(kmcVO.getDate());
+		certVO.setCertDi(kmcVO.getDI());
+		certVO.setCertPhone(kmcVO.getPhoneNo());
+		certVO.setCertNation(kmcVO.getNation());
+		certVO.setCertName(kmcVO.getName());
+		certVO.setCertResult(kmcVO.getResult());
+		certVO.setCertType(msg);
+		certVO.setCertIpaddr(kmcVO.getIp());
+		certVO.setBirthDay(kmcVO.getBirthDay());
+		certVO.setSexdstnCode(kmcVO.getGender());
+
+		//디비 테이블에 저장하기
+		mberManageService.insertCertInfoLog(certVO);
+		
+		return certVO;
+	}
 	
 	private String getDomain(HttpServletRequest request) {
 		String serverNm = request.getScheme() + "://" + request.getServerName();
src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp
--- src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp
+++ src/main/webapp/WEB-INF/jsp/sample/kmc/kmcis_web_sample_step02.jsp
@@ -344,6 +344,7 @@
     <input type="hidden" name="tr_cert"     value = "<%=tr_cert%>">
     <input type="hidden" name="tr_url"      value = "<%=tr_url%>">
     <input type="hidden" name="tr_add"      value = "<%=tr_add%>">	
+    <input type="hidden" name="tr_ver"      value = "V2">
     <input type="submit" value="본인인증서비스 요청"  onclick= "javascript:openKMCISWindow();">
 </form>
 <BR>
src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp
@@ -904,5 +904,6 @@
     <input type="hidden" name="tr_url"  id="tr_url" value = "${tr_url}">
     <input type="hidden" name="tr_add"  id="tr_add" value = "${tr_add}">
 	<input type="hidden" name="mberId"  id="mberId" value= "${userId}">
+	<input type="hidden" name="tr_ver"      value = "V2">
 </form>
 
src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
@@ -1883,6 +1883,7 @@
 			<input type="hidden" name="tr_cert" id="tr_certHeader"    value = "">
 			<input type="hidden" name="tr_url"   id="tr_urlHeader"   value = "">
 			<input type="hidden" name="tr_add"  id="tr_addHeader"     value = "">	
+			<input type="hidden" name="tr_ver"      value = "V2">
 		</form>
 		
 		<form name="cmpChangeForm" id="cmpChangeForm" method="post" action="#">
src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp
@@ -90,6 +90,7 @@
 				<input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
 				<input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
 				<input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
+				<input type="hidden" name="tr_ver"      value = "V2">
 			</form>
 			
 			<!-- ars 본인인증 Form -->
src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp
@@ -821,5 +821,6 @@
     <input type="hidden" name="tr_url"  id="tr_url" value = "${tr_url}">
     <input type="hidden" name="tr_add"  id="tr_add" value = "${tr_add}">
 	<input type="hidden" name="mberId"  id="mberId" value= "${userId}">
+	<input type="hidden" name="tr_ver"      value = "V2">
 </form>
 
src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp
@@ -860,6 +860,7 @@
     <input type="hidden" name="tr_cert" id="tr_cert" value = "${tr_cert}">
     <input type="hidden" name="tr_url"  id="tr_url" value = "${tr_url}">
     <input type="hidden" name="tr_add"  id="tr_add" value = "${tr_add}">
+    <input type="hidden" name="tr_ver"      value = "V2">
     <input type="hidden" name="mberNm" id="mberNm" value="">
     <input type="hidden" name="moblphonNo" id="moblphonNo" value="">
     <input type="hidden" name="mberId" id="mberId" value="">
src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp
@@ -129,6 +129,7 @@
 	<input type="hidden" name="tr_cert" id="tr_cert" value = "${tr_cert}">
 	<input type="hidden" name="tr_url"  id="tr_url" value = "${tr_url}">
 	<input type="hidden" name="tr_add"  id="tr_add" value = "${tr_add}">
+	<input type="hidden" name="tr_ver"      value = "V2">
 	<input type="hidden" name="mberNm" id="mberNm" value="">
 	<input type="hidden" name="moblphonNo" id="moblphonNo" value="">
 	<input type="hidden" name="mberId" id="mberId" value="">
src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp
@@ -644,6 +644,7 @@
     <input type="hidden" name="tr_cert" id="tr_cert"    value = "${tr_cert}">
     <input type="hidden" name="tr_url"   id="tr_url"   value = "${tr_url}">
     <input type="hidden" name="tr_add"  id="tr_add"     value = "${tr_add}">	
+    <input type="hidden" name="tr_ver"      value = "V2">
 </form>
 <form name="arsForm" method="post" action="#">
     <input type="hidden" id="phoneNumber" name="phoneNumber" value = "">
src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp
@@ -707,6 +707,7 @@
     <input type="hidden" name="tr_cert" id="tr_cert"    value = "${tr_cert}">
     <input type="hidden" name="tr_url"   id="tr_url"   value = "${tr_url}">
     <input type="hidden" name="tr_add"  id="tr_add"     value = "${tr_add}">	
+    <input type="hidden" name="tr_ver"      value = "V2">
 </form>
 <form name="arsForm" method="post" action="#">
     <input type="hidden" id="phoneNumber" name="phoneNumber" value = "">
src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp
@@ -505,6 +505,7 @@
 			<input type="hidden" name="tr_cert" id="tr_cert" value="">
 			<input type="hidden" name="tr_url"   id="tr_url" value="">
 			<input type="hidden" name="tr_add"  id="tr_add" value="">
+			<input type="hidden" name="tr_ver"      value = "V2">
 		</form>
 
     <!-- 마이페이지 - 회원정보 변경 -->
src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp
@@ -218,6 +218,7 @@
 			<input type="hidden" name="tr_cert" id="tr_cert" value="">
 			<input type="hidden" name="tr_url"   id="tr_url" value="">
 			<input type="hidden" name="tr_add"  id="tr_add" value="">
+			<input type="hidden" name="tr_ver"      value = "V2">
 		</form>
 		
 		<!-- 마이페이지 - 회원정보 변경 -->
src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
@@ -304,6 +304,7 @@
 	<input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
 	<input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
 	<input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
+	<input type="hidden" name="tr_ver"      value = "V2">
 </form>
 
 <form id="levelForm" name="levelForm" method="post">
src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp
@@ -97,6 +97,7 @@
 				<input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
 				<input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
 				<input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
+				<input type="hidden" name="tr_ver"      value = "V2">
 			</form>
 			
 			<!-- ars 본인인증 Form -->
src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
@@ -704,6 +704,7 @@
 	<input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
 	<input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
 	<input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
+	<input type="hidden" name="tr_ver"      value = "V2">
 </form>
 <form name="listForm" action="<c:url value='/web/user/mberSecureLogin.do'/>" method="post">
 	<input name="pageIndex" type="hidden" value="<c:out value='${mberCertLoginLogVO.pageIndex}'/>"/>
src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendNumberKmcReqPage.jsp
@@ -27,7 +27,7 @@
 		</script>
 	</head>
 	<body>
-		<br><br>
+		<%-- <br><br>
             [복호화 후 수신값] <br>
             <br>
             <table cellpadding=1 cellspacing=1>
@@ -120,6 +120,6 @@
             rec_cert : ${kmcVO.recCert}<br>
             <br>
             <br>
-            <a href="http://www.munjaon.co.kr/publish/kmc/kmcis_web_sample_step01.jsp">[다시 테스트]</a>
+            <a href="http://www.munjaon.co.kr/publish/kmc/kmcis_web_sample_step01.jsp">[다시 테스트]</a> --%>
 	</body>
 </html>     
(No newline at end of file)
src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp
@@ -863,6 +863,7 @@
 			<input type="hidden" id="tr_url" name="tr_url" value = "${tr_url}">
 			<input type="hidden" id="tr_add" name="tr_add" value = "${tr_add}">
 			<input type="hidden" id="tr_cert" name="tr_cert" value = "${tr_cert}">
+			<input type="hidden" name="tr_ver"      value = "V2">
 		</form>
 		
 		<!-- ars 본인인증 Form -->
src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp
@@ -408,6 +408,7 @@
 			<input type="hidden" id="tr_url" name="tr_url" value = "${tr_url}">
 			<input type="hidden" id="tr_add" name="tr_add" value = "${tr_add}">
 			<input type="hidden" id="tr_cert" name="tr_cert" value = "${tr_cert}">
+			<input type="hidden" name="tr_ver"      value = "V2">
 		</form>
 		
 		<!-- ars 본인인증 Form -->
Add a comment
List