Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Java] Apache Commons Codec : encoding/decoding 라이브러리 Computer & Program

HTTP 연결을 하면서 Base64로 인코딩할 일도 생겼다. 찾아보니 역시 Apache Commons 프로젝트에 쓰기 좋은 것이 있었다. Commons Codec이라는 이름의 라이브러리이고, Base64, Hex, Phonetic, URLs 등의 여러가지 encoding/decoding 기법을 제공한다.



오늘은 이를 이용하는 예제를 찾아보았다.



package com.mimul.sample;



import java.net.URLDecoder;

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.codec.binary.BinaryCodec;

import org.apache.commons.codec.binary.Hex;

import org.apache.commons.codec.digest.DigestUtils;

import org.apache.commons.codec.net.BCodec;

import org.apache.commons.codec.net.QCodec;

import org.apache.commons.codec.net.URLCodec;



public class CodecTest

{

public static void main(String[] args) {

String encodedText = null;

String decodedText = null;

String clearText = "미물닷컴에 오신것을 환영합니다.";



try {

// Base64 encode/decode

encodedText = new String(Base64.encodeBase64(clearText.getBytes()));

decodedText = new String(Base64.decodeBase64(encodedText.getBytes()));

System.out.println("BASE64 Encoded: " + encodedText);

System.out.println("BASE64 Decoded:" + decodedText);



// URL encode/decode

URLCodec urlCodec = new URLCodec();

encodedText = urlCodec.encode(clearText);

decodedText = urlCodec.decode(encodedText);

System.out.println("URL Encoded: " + encodedText);

System.out.println("URL Decoded:" + decodedText);

System.out.println("URLDecoder.decode:" + URLDecoder.decode(encodedText, "utf-8"));



// MD5/SHA

String md5HexText = DigestUtils.md5Hex(clearText);

String shaHexText = DigestUtils.shaHex(clearText);

System.out.println("MD5: " + md5HexText);

System.out.println("SHA: " + shaHexText);



// Hex

encodedText = new String(Hex.encodeHex(clearText.getBytes()));

decodedText = new String(Hex.decodeHex(encodedText.toCharArray()));

System.out.println("Hexa Encoded: " + encodedText);

System.out.println("Hexa Decoded: " + decodedText);



// Binary encode/decode

BinaryCodec binaryCodec = new BinaryCodec();

byte[] bits = new byte[2];

String encodedBinary = new String(binaryCodec.encode(bits));

System.out.println("Binary Encoded: " + encodedBinary);

bits = new byte[2];

bits[0] = 0x01;

encodedBinary = new String(binaryCodec.encode(bits));

System.out.println("Binary Encoded:" + encodedBinary);



// QCodec encode/decode

QCodec qcodec = new QCodec();

encodedText = qcodec.encode(clearText);

decodedText = qcodec.decode(encodedText);

System.out.println("QCodec Encoded: " + encodedText);

System.out.println("QCodec Decoded: " + decodedText);



// BCodec encode/decode

BCodec bcodec = new BCodec();

encodedText = (String) bcodec.encode((Object) clearText);

decodedText = bcodec.decode(encodedText);

System.out.println("Encoded: " + encodedText);

System.out.println("Decoded: " + decodedText);

} catch (Throwable e) {

e.printStackTrace();

}

}

}





실행결과

BASE64 Encoded: ucy5sLTlxMS/oSC/wL3FsM3AuyDIr7+1x9W0z7TZLg==

BASE64 Decoded:미물닷컴에 오신것을 환영합니다.

URL Encoded: %EB%AF%B8%EB%AC%BC%EB%8B%B7%EC%BB%B4%EC%97%90+%EC%98%A4%EC%8B%A0%EA%B2%83%EC%9D%84+%ED%99%98%EC%98%81%ED%95%A9%EB%8B%88%EB%8B%A4.

URL Decoded:미물닷컴에 오신것을 환영합니다.

URLDecoder.decode:미물닷컴에 오신것을 환영합니다.

MD5: 9f68c3c2124a995573581ba44fca8e7e

SHA: 6ae40c444ff5ac6a82c017831dc277792d43136a

Hexa Encoded: b9ccb9b0b4e5c4c4bfa120bfc0bdc5b0cdc0bb20c8afbfb5c7d5b4cfb4d92e

Hexa Decoded: 미물닷컴에 오신것을 환영합니다.

Binary Encoded: 0000000000000000

Binary Encoded:0000000000000001

QCodec Encoded: =?UTF-8?Q?=EB=AF=B8=EB=AC=BC=EB=8B=B7=EC=BB=B4=EC=97=90 =EC=98=A4=EC=8B=A0=EA=B2=83=EC=9D=84 =ED=99=98=EC=98=81=ED=95=A9=EB=8B=88=EB=8B=A4.?=

QCodec Decoded: 미물닷컴에 오신것을 환영합니다.

Encoded: =?UTF-8?B?66+466y864u37Lu07JeQIOyYpOyLoOqyg+ydhCDtmZjsmIHtlanri4jri6Qu?=

Decoded: 미물닷컴에 오신것을 환영합니다.







출처 : Java Tips : Apache Commons Codec 라이브러리 활용


덧글

  • 캉캉희 2012/08/07 16:33 # 삭제 답글

    자료 감사합니다 !
    제가 완전 초짜라서
    Commons Codec을 어디에 넣어야 하는지 알수 있을까요?
    경로좀 알고 싶네요 ㅠ
  • Sigel 2012/08/07 19:46 #

    어디에서 사용하시나요?? java는 모든 클래스나 라이브러리는 CLASS_PATH에 잡아주면 됩니다. tomcat 같은 웹 서버를 사용한다면 웹서버의 lib 폴더에 넣고 재시작해도 되고요.

    웹 서버 같은게 아니라 직접 java 명령을 사용한다면 java 명령 실행할 때 CLASS_PATH에 잡아주세요. 예를 들어, java 명령을 실행하는 위치를 기준으로.. lib 경로를 만들고 그 아래에 필요한 라이브러리 jar 파일을 넣었다면..
    java -cp .:lib/* MyClass
    또는
    export CLASS_PATH=$CLASS_PATH:lib/*
    java MyClass
댓글 입력 영역

Google AdSense (text/image)