티스토리 뷰

XPlatform(이하 엑스플랫폼) 이용하여 KISA SEED 암/복호화 방법입니다.


이제 거의 넥사크로플랫폼 사용이 주를 이루겠지만, 혹시 추후 사용할 경우를 위하여 기록으로 남깁니다.



먼저 다음 내용이 담긴 공통 스크립트 파일을 만듭니다.


var SEED_KEY = "put_your_secure_key_values_here!!";


/**

 * SEED 128 암호화를 한다.

 *

 * @param source 암호화 할 문자열

 * @return SEED 128 암호화 값

 */

function gfn_encrypt(source) {

var oExtObj = new ExtCommon();

var oCrypto = new Crypto();

oCrypto.init("seed", 128);

var oKey = oCrypto.getKey(SEED_KEY);

var oDataBuffer = new Buffer(source);

var oEncryptedBuffer = oCrypto.encrypt(oDataBuffer, oKey);

var sEncryptedStr = oExtObj.encodeBase64(oEncryptedBuffer);

return sEncryptedStr;

}


/**

 * SEED 128 복호화를 한다.

 *

 * @param source 암호화 된 문자열

 * @return 복호화 한 문자열

 */

function gfn_decrypt(source) {

var oExtObj = new ExtCommon();

var oCrypto = new Crypto();

oCrypto.init("seed", 128);

var oKey = oCrypto.getKey(SEED_KEY);

var decryptStr = oExtObj.decodeBase64(source, "OBJ");

var oDecryptedBuffer = oCrypto.decrypt(decryptStr, oKey);

return oDecryptedBuffer.getText(0, oDecryptedBuffer.length);

}



그리고 Form을 생성하고 include 하여 적절히 위 함수를 사용하시면 됩니다. 예제는 다음과 같습니다.

include "Base::lib_script_seed.xjs";


var sourceStr = "xplatform_엑스플랫폼_만세!!! All is yours!#@$%@#東西南北";


function form_load(obj:Form, e:LoadEventInfo)

{

var sEncryptedStr = gfn_encrypt(sSourceStr);

var sDecryptedStr = gfn_decrypt(sEncryptedStr);

trace("----- Source     = [" + sSourceStr + "]");

trace("----- Encrypted = [" + sEncryptedStr + "]");

trace("----- Decrypted = [" + sDecryptedStr + "]");

}


아 물론 RSA 같지 않아서 의도적으로 작정하고 찾아내면 키 값은 노출되긴 하겠지요...


그리고 참고로 엑스플랫폼 ExtCommon API를 사용하므로 해당 API도 프로젝트에 등록되어 있어야 합니다.

데이터셋 또는 변수로 서버에서 받아서 암/복호화는 KISA 사이트에 자료실에서인가... 다운받아서 해보시길...




무더위 조심하시고 건강하시길...






댓글