package itn.let.uat.uia.web;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;

import org.apache.commons.lang3.StringUtils;

import com.icert.comm.secu.IcertSecuManager;

import itn.let.uat.uia.service.AuthCertVO;
import itn.let.uss.umt.service.MberManageVO;

public class KmcCertChecker {

	//회원가입 시 인증수단을 휴대폰 본인인증만 했을 경우 사용
	public AuthCertVO authCertCheck(String trUrl) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert       = "";
	        String cpId          = "MJOM1001";        // 회원사ID
	        String urlCode       = "001003";     // URL코드
	        
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "005001";
			}
	        
	        String certNum       = reqNum;     // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date          = day;        // 요청일시
	        String certMet       = "M";     // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name          = "";        // 성명
	        String phoneNo	     = "";	    // 휴대폰번호
	        String phoneCorp     = "";   // 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay	     = "";	// 생년월일
	    	String gender	     = "";		// 성별
	    	if(gender == null) gender = "";
	        String nation        = "0";      // 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo      = "";	// 추가DATA정보
	    	String extendVar     = "0000000000000000";                  // 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	//회원가입 시 인증수단을 ARS, 휴대폰 본인인증 했을 경우 사용
	public AuthCertVO authCertCheckTwo(String trUrl, String mberNm, String moblphonNo, String sexdstnCode, String nationality, String birth) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert       = "";
	        String cpId          = "MJOM1001";        // 회원사ID
	        String urlCode       = "001003";     // URL코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "004001";
			}
	        String certNum       = reqNum;     // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date          = day;        // 요청일시
	        String certMet       = "M";     // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name          = mberNm;        // 성명
	        String phoneNo	     = moblphonNo;	    // 휴대폰번호
	        String phoneCorp     = "";   // 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay	     = birth;	// 생년월일
	    	String gender	     = sexdstnCode;		// 성별
	    	if(gender == null) gender = "";
	        String nation        = nationality;      // 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo      = "";	// 추가DATA정보
	    	String extendVar     = "0000000000000000";                  // 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	//아이디 패스워드 찾기 본인인증
	public AuthCertVO authCertCheckThree(String trUrl, MberManageVO mberManageVO) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert       = "";
	        String cpId          = "MJOM1001";        // 회원사ID
	        String urlCode       = mberManageVO.getAuthRUrlCode();     // URL 인증 코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "005002";
			}
	        String certNum       = reqNum;     // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date          = day;        // 요청일시
	        String certMet       = "M";     // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name          = mberManageVO.getMberNm();        // 성명
	        String phoneNo	     = mberManageVO.getMoblphonNo();	    // 휴대폰번호
	        String phoneCorp     = "";   // 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay	     = "";	// 생년월일
	    	String gender	     = "";		// 성별
	    	if(gender == null) gender = "";
	        String nation        = "0";      // 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo      = mberManageVO.getMberId();	// 추가DATA정보
	    	if(StringUtils.isNotEmpty(mberManageVO.getPassword()))
	    	{
	    		plusInfo = plusInfo + ",,," + mberManageVO.getPassword();
	    	}
	    	String extendVar     = "0000000000000000";                  // 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}

	//IP 체크해주기
	public AuthCertVO authCertCheckFour(String trUrl, String mberNm, String moblphonNo, String sexdstnCode, String nationality, String birth, String id) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert       = "";
	        String cpId          = "MJOM1001";        // 회원사ID
	        String urlCode       = "001006";     // URL코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "005003";
			}
	        String certNum       = reqNum;     // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date          = day;        // 요청일시
	        String certMet       = "M";     // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name          = mberNm;        // 성명
	        String phoneNo	     = moblphonNo;	    // 휴대폰번호
	        String phoneCorp     = "";   // 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay	     = birth;	// 생년월일
	    	String gender	     = sexdstnCode;		// 성별
	    	if(gender == null) gender = "";
	        String nation        = nationality;      // 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo      = id;	// 추가DATA정보
	    	String extendVar     = "0000000000000000";                  // 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	//마이페이지 휴대폰 변경 기능 본인인증에 사용
	public AuthCertVO authCertCheckFive(String trUrl, String id) {

		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert	= "";
	        String cpId				= "MJOM1001";			// 회원사ID
	        String urlCode			= "001009";			// URL코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "005005";
			}
	        String certNum			= reqNum;				// 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date				= day;					// 요청일시
	        String certMet			= "M";					// 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name				= "";				// 성명
	        String phoneNo			= "";					// 휴대폰번호
	        String phoneCorp		= "";					// 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay			= "";					// 생년월일
	    	String gender			= "";					// 성별
	    	if(gender == null) gender = "";
	        String nation			= "";					// 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo			= id;					// 추가DATA정보
	    	String extendVar		= "0000000000000000";	// 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	// 마이페이지 발신번호 관리 > 발신번호 등록 시 사용
	public AuthCertVO authCertCheckSix(String trUrl, String id, String moblphonNo, String mberNm, String myNameFlag) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert	= "";
	        String cpId				= "MJOM1001";			// 회원사ID
	        String urlCode			= "001007";			// URL코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "006005";
			}
	        String certNum			= reqNum;				// 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date				= day;					// 요청일시
	        String certMet			= "M";					// 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name				= mberNm;				// 성명
	        String phoneNo			= moblphonNo;			// 휴대폰번호
	        String phoneCorp		= "";					// 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay			= "";					// 생년월일
	    	String gender			= "";					// 성별
	    	if(gender == null) gender = "";
	        String nation			= "";					// 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo			= id + "§" + myNameFlag;					// 추가DATA정보
	    	String extendVar		= "0000000000000000";	// 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	//마이패이지 회원탈퇴 > 본인인증으로 회원탈퇴에 사용
	public AuthCertVO authCertCheckSeven(String trUrl, String mberNm) {
		
		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert	= "";
	        String cpId				= "MJOM1001";			// 회원사ID
	        String urlCode			= "001010";				// URL코드
	        //kmc 본인인증 실/개발 서버 구분
			if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
				urlCode = "005006";
			}
	        String certNum			= reqNum;				// 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date				= day;					// 요청일시
	        String certMet			= "M";					// 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name				= mberNm;				// 성명
	        String phoneNo			= "";					// 휴대폰번호
	        String phoneCorp		= "";					// 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay			= "";					// 생년월일
	    	String gender			= "";					// 성별
	    	if(gender == null) gender = "";
	        String nation			= "";					// 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo			= "";					// 추가DATA정보
	    	String extendVar		= "0000000000000000";	// 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
	
	//아이디 패스워드 찾기 본인인증
		public AuthCertVO authCertCheckEight(String trUrl, String idParam) {
			
			AuthCertVO certVO = new AuthCertVO();
			
			//kmc step 01 데이터
				//날짜 생성
		        Calendar today = Calendar.getInstance();
		        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		        String day = sdf.format(today.getTime());

		        Random ran = new Random();
		        //랜덤 문자 길이
		        int numLength = 6;
		        String randomStr = "";

		        for (int i = 0; i < numLength; i++) {
		            //0 ~ 9 랜덤 숫자 생성
		            randomStr += ran.nextInt(10);
		        }

				//reqNum은 최대 40byte 까지 사용 가능
		        String reqNum = day + randomStr; //요청번호
		        
		        String tr_cert       = "";
		        String cpId          = "MJOM1001";        // 회원사ID
		        String urlCode       = "001012";     // URL코드
		        //kmc 본인인증 실/개발 서버 구분
				if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) {
					urlCode = "005008";
				}
		        String certNum       = reqNum;     // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
		        String date          = day;        // 요청일시
		        String certMet       = "M";     // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
		        String name          = "";        // 성명
		        String phoneNo	     = "";	    // 휴대폰번호
		        String phoneCorp     = "";   // 이동통신사
		    	if(phoneCorp == null) phoneCorp = "";
		    	String birthDay	     = "";	// 생년월일
		    	String gender	     = "";		// 성별
		    	if(gender == null) gender = "";
		        String nation        = "0";      // 내외국인 구분 - 0:내국인, 1:외국인 
		    	String plusInfo      = idParam;	// 추가DATA정보
		    	String extendVar     = "0000000000000000";                  // 확장변수
		        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

		    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
		    	String tr_add     = "N";         // IFrame사용여부
		        
		    	//01. 한국모바일인증(주) 암호화 모듈 선언
		    	IcertSecuManager seed  = new IcertSecuManager();

				//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
				String enc_tr_cert = "";
				tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
				enc_tr_cert        = seed.getEnc(tr_cert, "");

				//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
				String hmacMsg = "";
				hmacMsg = seed.getMsg(enc_tr_cert);

				//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
				tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
		
				certVO.setTr_cert(tr_cert);
				certVO.setTr_url(tr_url);
				certVO.setTr_add(tr_add);
				
			return certVO;
		}
		
		
		
	// 마이페이지 보안인증
	public AuthCertVO authCertCheckNine(String trUrl, String id) {

		AuthCertVO certVO = new AuthCertVO();
		
		//kmc step 01 데이터
			//날짜 생성
	        Calendar today = Calendar.getInstance();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        String day = sdf.format(today.getTime());

	        Random ran = new Random();
	        //랜덤 문자 길이
	        int numLength = 6;
	        String randomStr = "";

	        for (int i = 0; i < numLength; i++) {
	            //0 ~ 9 랜덤 숫자 생성
	            randomStr += ran.nextInt(10);
	        }

			//reqNum은 최대 40byte 까지 사용 가능
	        String reqNum = day + randomStr; //요청번호
	        
	        String tr_cert	= "";
	        String cpId				= "MJOM1001";			// 회원사ID
	        String urlCode			= "001014";			// URL코드
	        //kmc 본인인증 실/개발 서버 구분
	        
	        System.out.println("@@@@@   trUrl  : "  + trUrl);
			if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) {
				urlCode = "010001";
			}
	        String certNum			= reqNum;				// 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
	        String date				= day;					// 요청일시
	        String certMet			= "M";					// 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 
	        String name				= "";					// 성명
	        String phoneNo			= "";					// 휴대폰번호
	        String phoneCorp		= "";					// 이동통신사
	    	if(phoneCorp == null) phoneCorp = "";
	    	String birthDay			= "";					// 생년월일
	    	String gender			= "";					// 성별
	    	if(gender == null) gender = "";
	        String nation			= "";					// 내외국인 구분 - 0:내국인, 1:외국인 
	    	String plusInfo			= id;					// 추가DATA정보
	    	String extendVar		= "0000000000000000";	// 확장변수
	        //End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------

	    	String tr_url     = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do";         // 본인인증서비스 결과수신 POPUP URL
	    	String tr_add     = "N";         // IFrame사용여부
	        
	    	//01. 한국모바일인증(주) 암호화 모듈 선언
	    	IcertSecuManager seed  = new IcertSecuManager();

			//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
			String enc_tr_cert = "";
			tr_cert            = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
			enc_tr_cert        = seed.getEnc(tr_cert, "");

			//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
			String hmacMsg = "";
			hmacMsg = seed.getMsg(enc_tr_cert);

			//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
			tr_cert  = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
	
			certVO.setTr_cert(tr_cert);
			certVO.setTr_url(tr_url);
			certVO.setTr_add(tr_add);
			
		return certVO;
	}
}
