Java/Jakarta Project
[Commons Codec]Base64 클래스로 Base64 인코딩, 디코딩 하기...
Huikyun
2009. 7. 3. 16:37
Java 뿐 아니라 개발자라면 한번쯤은 접해봤을법한 Base64 인코딩...
Base64의 인코딩 원리는 아래의 글을 확인해 주시고...
2009/02/23 - [정보보안/암호학] - Base64 인코딩 원리
Java 에서 Base64 인코딩을 하기 위해서는 기본적으로 Java에서 제공하는 클래스를 이용하는 방법과
Apache Commons Codec 의 Base64 클래스를 사용하는 방법이 있다.
먼저 자바에서 기본적으로 제공하는 Base64 인코딩...
static 메서드가 아니기 때문에 객체 생성후 호출을 해야하고
decoding의 경우 예외처리까지 해야하는 불편함이 있다.
다음은 Apache Commons Codec 의 Base64 클래스를 이용하는 방법이다.
이전 소스코드보다 상대적으로 많이 길이가 줄어들었으며 static 메서드라서 바로 호출이 가능하다.
물론 이전 소스코드보다 가독성 또한 뛰어나다.
위 두개 소스의 결과는 동일하며 아래와 같다.
Base64의 인코딩 원리는 아래의 글을 확인해 주시고...
2009/02/23 - [정보보안/암호학] - Base64 인코딩 원리
Java 에서 Base64 인코딩을 하기 위해서는 기본적으로 Java에서 제공하는 클래스를 이용하는 방법과
Apache Commons Codec 의 Base64 클래스를 사용하는 방법이 있다.
먼저 자바에서 기본적으로 제공하는 Base64 인코딩...
static 메서드가 아니기 때문에 객체 생성후 호출을 해야하고
decoding의 경우 예외처리까지 해야하는 불편함이 있다.
import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class TestBase64Encoder { public static void main(String[] args) { BASE64Encoder encoder = new BASE64Encoder(); BASE64Decoder decoder = new BASE64Decoder(); String txtPlain = "베이스64 인코딩, 디코딩 테스트입니다."; String txtCipher = ""; System.out.println("Source String : " + txtPlain); txtCipher = encoder.encode(txtPlain.getBytes()); System.out.println("Encode Base64 : " + txtCipher); try { txtPlain = new String(decoder.decodeBuffer(txtCipher)); } catch (IOException ioe) { ioe.printStackTrace(); } System.out.println("Decode Base64 : " + txtPlain); } }
다음은 Apache Commons Codec 의 Base64 클래스를 이용하는 방법이다.
이전 소스코드보다 상대적으로 많이 길이가 줄어들었으며 static 메서드라서 바로 호출이 가능하다.
물론 이전 소스코드보다 가독성 또한 뛰어나다.
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; public class TestCodecBase64 { public static void main(String[] args) { String txtPlain = "베이스64 인코딩, 디코딩 테스트입니다."; String txtCipher = ""; System.out.println("Source String : " + txtPlain); txtCipher = Base64.encode(txtPlain.getBytes()); System.out.println("Encode Base64 : " + txtCipher); txtPlain = new String(Base64.decode(txtCipher)); System.out.println("Decode Base64 : " + txtPlain); } }
위 두개 소스의 결과는 동일하며 아래와 같다.
Source String : 베이스64 인코딩, 디코딩 테스트입니다.
Encode Base64 : uqPAzL26NjQgwM7E2rX5LCC18MTatfkgxde9usauwNS0z7TZLg==
Decode Base64 : 베이스64 인코딩, 디코딩 테스트입니다.
Encode Base64 : uqPAzL26NjQgwM7E2rX5LCC18MTatfkgxde9usauwNS0z7TZLg==
Decode Base64 : 베이스64 인코딩, 디코딩 테스트입니다.