본문 바로가기
STUDY/JAVA

SEED CBC 적용

by NOTEEE 2018. 6. 21.

아래 SEED 블록암호 알고리즘 소스코드를 다운 받은 후


https://seed.kisa.or.kr/iwt/ko/bbs/EgovReferenceDetail.do?bbsId=BBSMSTR_000000000002&nttId=77&pageIndex=1&searchCnd=&searchWrd=&useAt=Y

(소스코드와 매뉴얼이 있으니 참고)


원하는 언어 - CBC폴더에 KISA_SEED_CBC.java 파일을 프로젝트에 복붙하여 세팅한다.



KISA_SEED.java 클래스를 생성 후

public class KISA_SEED {
 
    static String charset = "utf-8";
 
    public static byte pbUserKey[] = { (byte0x12, (byte0x25, (byte0x54, (byte0x47
            (byte0x45, (byte0x4E, (byte0x12, (byte0x32, (byte0x19, (byte0x5E
            (byte0x2A, (byte0x2A, (byte0x65, (byte0x26,
            (byte0x38, (byte0x54 };
    
    public static byte bszIV[] = { (byte0x22, (byte0x25, (byte0x28, (byte0x5E
            (byte0x1A, (byte0x2A, (byte0x25, (byte0x21, (byte0x21, (byte0x42
            (byte0x45, (byte0x78, (byte0x41, (byte0x55, (byte0x4A, (byte0x21 };
    
    public static void main(String[] args) {
        
        String encryptData;
        
        try {
            encryptData = encrypt("TEST");
            decrypt(encryptData);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
 
    public static String encrypt(String str) throws UnsupportedEncodingException {
        byte[] msg = null;
 
        try {
            msg = KISA_SEED_CBC.SEED_CBC_Encrypt(pbUserKey, bszIV, str.getBytes(charset), 0,
                    str.getBytes(charset).length);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
 
        Encoder encoder = Base64.getEncoder();
        byte[] encArray = encoder.encode(msg);
        try {
            System.out.println(new String(encArray, "utf-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return new String(encArray, "utf-8");
    }
 
    public static String decrypt(String str) {
 
        Decoder decoder = Base64.getDecoder();
        byte[] msg = decoder.decode(str);
 
        String result = "";
        byte[] dec = null;
 
        try {
            dec = KISA_SEED_CBC.SEED_CBC_Decrypt(pbUserKey, bszIV, msg, 0, msg.length);
            result = new String(dec, charset);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
 
        System.out.println("decrypt Result = " + result);
        return result;
    }
 
}
 
cs

encrypt, decrypt 통해 암호화, 복호화를 한다.

'STUDY > JAVA' 카테고리의 다른 글

serialVersionUID  (0) 2018.03.06
자바 String과 new String() 차이  (0) 2018.01.31
Gson  (0) 2018.01.31
향상된 FOR문  (0) 2018.01.31
SEED 암호화  (0) 2018.01.24