package egovframework.rte.fdl.cryptography.impl;
import java.security.InvalidKeyException;
import egovframework.rte.fdl.cryptography.impl.aria.ARIAEngine;
import egovframework.rte.fdl.cryptography.impl.aria.AnsiX923Padding;
import egovframework.rte.fdl.cryptography.impl.aria.CryptoPadding;
public class ARIACipher {
/** 마스터 키 */
String masterKey = null;
/**
* 암호 설정.
*
* @param masterKey 암호문자열
*/
public void setPassword(String masterKey) {
masterKey = (masterKey.length() > 32 ? masterKey.substring(0, 32) : masterKey);
this.masterKey = masterKey;
}
/**
* 바이트 배열 리턴 암호화
*
* @param data 암호화할 바이트배열
* @return 암호화된 바이트배열
*/
public byte[] encrypt(byte[] data) {
try {
CryptoPadding padding = new AnsiX923Padding();
byte[] mk = padding.addPadding(masterKey.getBytes(), 32);
ARIAEngine instance = new ARIAEngine(256);
return instance.encrypt(data, mk);
} catch (InvalidKeyException ike) {
throw new RuntimeException(ike);
}
}
/**
* 복호화 배열 리턴 암호화.
*
* @param encryptedData 복호화할 데이타 바이트배열
* @return 복호화된 바이트배열
*/
public byte[] decrypt(byte[] encryptedData) {
try {
CryptoPadding padding = new AnsiX923Padding();
byte[] mk = padding.addPadding(masterKey.getBytes(), 32);
ARIAEngine instance = new ARIAEngine(256);
return instance.decrypt(encryptedData, mk);
} catch (InvalidKeyException ike) {
throw new RuntimeException(ike);
}
}
}