173 lines
4.9 KiB
Java
173 lines
4.9 KiB
Java
package nlib.cmm.crypto;
|
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
|
|
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
|
|
import nlib.cmm.service.NlibProperty;
|
|
import nlib.util.StringUtil;
|
|
|
|
/**
|
|
* <pre>
|
|
* @Class Name : AriaCrypto.java
|
|
*
|
|
* @Description : 양방향 Aria 알고리즘 암복호화 처리 클래스 (egov Aria 알고리즘 구현체 사용)
|
|
*
|
|
*
|
|
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
|
*
|
|
* </pre>
|
|
*
|
|
* @ ------------ -------- ---------------------------
|
|
* @ 수정일 수정자 수정내용
|
|
* @ ------------ -------- ---------------------------
|
|
* @ 2021. 7. 8. KNKIM 최초 생성
|
|
*
|
|
*
|
|
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
|
* @since 2021. 7. 8.
|
|
* @version 1.0
|
|
*
|
|
*/
|
|
@Component("ariaCrypto")
|
|
public class AriaCrypto {
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(AriaCrypto.class);
|
|
|
|
/**
|
|
* 암호처리 시, 기본 키
|
|
*/
|
|
private static String ARIA_DEFAULT_KEY = NlibProperty.getProperty("crypto.aria.defaultKey");
|
|
|
|
/**
|
|
* 기본키를 가지고 암호화한다.
|
|
*
|
|
* @param value
|
|
* @return
|
|
*/
|
|
public static String encode(String value) {
|
|
|
|
String ret = null;
|
|
|
|
try {
|
|
ret = AriaUtil.ariaEncrypt(value);
|
|
} catch(Exception e) {
|
|
log.error("ERROR at AriaCrypto.encode : " + e.toString());
|
|
e.printStackTrace();
|
|
ret = null;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* 기본키를 가지고 Egov 모듈을 사용하여 암호화한다.
|
|
*
|
|
* @param value
|
|
* @return
|
|
*/
|
|
public static String encodeEgov(String value) {
|
|
log.info("encode : 암호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
|
return encodeEgov(value, ARIA_DEFAULT_KEY);
|
|
}
|
|
|
|
|
|
/**
|
|
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 Egov 모듈을 사용하여 암호화한다.
|
|
*
|
|
* @param value
|
|
* @param key
|
|
* @return
|
|
*/
|
|
public static String encodeEgov(String value, String key) {
|
|
|
|
if(StringUtil.isEmpty(value)) {
|
|
log.error("encode : 암호화할 문자열 정보가 없습니다.");
|
|
return null;
|
|
}
|
|
|
|
if(StringUtil.isEmpty(key)) {
|
|
log.error("encode : 암호화에 사용할 키 정보가 없습니다.");
|
|
return null;
|
|
}
|
|
|
|
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
|
|
|
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
|
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
|
egovPasswordEncoder.setAlgorithm("SHA-256");
|
|
|
|
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
|
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
|
egovARIACryptoServiceImpl.setBlockSize(1025);
|
|
|
|
return Base64.encodeBase64String(egovARIACryptoServiceImpl.encrypt(value.getBytes(), key));
|
|
}
|
|
|
|
/**
|
|
* 기본키를 가지고 복호화한다.
|
|
*
|
|
* @param value
|
|
* @return
|
|
*/
|
|
public static String decode(String value) {
|
|
|
|
String ret = null;
|
|
|
|
try {
|
|
ret = AriaUtil.ariaDecrypt(value);
|
|
} catch(Exception e) {
|
|
log.error("ERROR at AriaCrypto.decode : " + e.toString());
|
|
e.printStackTrace();
|
|
ret = null;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* 기본키를 가지고 Egov 모듈을 사용하여 복호화한다.
|
|
*
|
|
* @param value
|
|
* @return
|
|
*/
|
|
public static String decodeEgov(String value) {
|
|
log.info("decode : 복호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
|
return decodeEgov(value, ARIA_DEFAULT_KEY);
|
|
}
|
|
|
|
/**
|
|
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 Egov 모듈을 사용하여 복호화한다.
|
|
* @param value
|
|
* @param key
|
|
* @return
|
|
*/
|
|
public static String decodeEgov(String value, String key) {
|
|
|
|
if(StringUtil.isEmpty(value)) {
|
|
log.error("decode : 복호화할 암호문자열 정보가 없습니다.");
|
|
return null;
|
|
}
|
|
|
|
if(StringUtil.isEmpty(key)) {
|
|
log.error("decode : 복호화에 사용할 키 정보가 없습니다.");
|
|
return null;
|
|
}
|
|
|
|
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
|
|
|
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
|
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
|
egovPasswordEncoder.setAlgorithm("SHA-256");
|
|
|
|
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
|
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
|
egovARIACryptoServiceImpl.setBlockSize(1025);
|
|
|
|
return new String(egovARIACryptoServiceImpl.decrypt(Base64.decodeBase64(value), key));
|
|
}
|
|
}
|