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
728x90
300x250