본문 바로가기

JAVA

KISA SEED 암호화 JAVA ECB모드 예제

KISA SEED 암호화를 적용 할 때, 운영모드가 6가지이고 적용 방식도 여러가지 방법이 있습니다.

그 중에서 제가 한 방식은 아래와 같습니다.

며칠동안 고생 했기 때문에... 블로그에 남겨 둡니다. 많은 분들께 KISA SEED 처음 적용 할 때 제 글이 도움이 되길 바라면서~!

 

아래 예제에서 Base64 디코딩은 안했습니다. 이유는 없고, 거래 업체랑 맞춰야 해서....

import java.util.Arrays;

import java.util.Base64;
import java.util.Base64.Encoder;

public class KISA_SEED_ECB_EXv2 {

	private static byte pbUserKey[] = "0123456789abcdef".getBytes(); // 16
	private static byte pbCipher[] = new byte[50];
    
    public static void main(String[] args) {
    	                                    
    	byte[] password = encrypt("고양이");
    	System.out.println("password : encrypt: " + new String(password));
        System.out.println("password : decrypt: " + decrypt(pbCipher)); 
        
    }

    public static byte[] encrypt(String str){
    	byte[] userBytes = str.getBytes();
    	byte pbData[] = new byte[16];
    	
		for(int i=0; i<userBytes.length; i++) {
		    if (i < userBytes.length) 
		        pbData[i] = userBytes[i];
		    else
		        pbData[i] = 0x00;
		}

         //암호화 함수 호출
    	pbCipher = KISA_SEED_ECB.SEED_ECB_Encrypt(pbUserKey, pbData,  0, pbData.length);

        /**JDK1.8 일 때 사용  */
        Encoder encoder = Base64.getEncoder(); 
        byte[] encArray = encoder.encode(Arrays.copyOf(pbCipher, 16)); // 인코딩할 바이트 배열의 길이를 16으로 수정
         
        return encArray;
    }

    public static String decrypt(byte[] pbCipher) {
        
        String result = "";
        byte pbPlain[]  =  new byte[16]; 
        //복호화 함수 호출
        pbPlain = KISA_SEED_ECB.SEED_ECB_Decrypt(pbUserKey, pbCipher, 0, pbCipher.length);
		result = new String(pbPlain);

       return result;
    }
 
}

결과 :

password : encrypt: RnDjCP+VTTPR1SeYNhdDIQ==
password : decrypt: 고양이

인터넷진흥원 홈페이지 가시면 예제를 보실 수 있습니다.

zip 파일 열면, 언어별로 폴더가 정리되어 있습니다.

각 언어 폴더 보시면 6가지 운영 모드가 있고, 그 중에서 선택해서 사용하시면 됩니다.

 

예제 한번 돌려보시고 적용하시면 금방 이해하실거예요.

pdf 파일 가이드 보시구요. 정리가 잘 되어 있습니다.

 

저는... 암호화에 대해 배경 지식이 적어서.... 일단 만들어야 되니까.. 함수 가져다가 쓰기만 했습니다. 블록 암호화에 대한 지식은 다시 공부하기로..

 

https://seed.kisa.or.kr/kisa/Board/17/detailView.do

 

KISA 암호이용활성화 - 자료실 - 암호알고리즘 소스코드

한국인터넷진흥원(KISA)에서는 128비트 블록암호 SEED를 쉽게 활용할 수 있도록, ECB, CBC, CTR, CCM, GCM, CMAC 운영모드에 대한 소스코드를 배포하고 있습니다. 언어 : C/C++, Java, ASP, JSP, PHP  다음글 2019-01-3

seed.kisa.or.kr

 

728x90
300x250