HTTP 연결을 하면서 Base64로 인코딩할 일도 생겼다. 찾아보니 역시 Apache Commons 프로젝트에 쓰기 좋은 것이 있었다. Commons Codec이라는 이름의 라이브러리이고, Base64, Hex, Phonetic, URLs 등의 여러가지 encoding/decoding 기법을 제공한다.
오늘은 이를 이용하는 예제를 찾아보았다.
실행결과
출처 : Java Tips : Apache Commons Codec 라이브러리 활용
오늘은 이를 이용하는 예제를 찾아보았다.
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();
}
}
}
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: 미물닷컴에 오신것을 환영합니다.
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 라이브러리 활용






덧글