アットウィキロゴ

Java:Base64

JavaでBase64エンコード/デコード処理を行う


今回は、JavaでBase64エンコード/デコード処理を行う方法について紹介します。

Javaには、標準でBase64のエンコード/デコード処理が存在しません。
ネットで検索すると引っ掛かる「sun.misc.BASE64Encoder」を使用する方法がありますが、
このクラスは、Javaのバージョンや Sun 以外の VM には存在しない可能性があるので、
通常、使用しない方がよいとされているものです。
そういった意味で、Javaには、標準でBase64のエンコード/デコード処理が存在しないことになります。


JavaでBase64エンコード/デコード処理を行うには、様々な選択肢があります。
お勧めというわけではありませんが、過去に、私が選択した方法を紹介します。
  • Seasar2(S2Container)に含まれている「org.seasar.framework.util.Base64Util」を使用する方法
  • Commons Codecに含まれている「org.apache.commons.codec.binary.Base64」を使用する方法
  • 独自に実装する方法
etc

ちなみに、独自に実装するという選択肢は、
興味本位で行ったものなのでメリットはないと思います。

最近はSeasar2をベースとしたフレームワークを利用する機会が多いので、
Seasar2の機能を利用することが多いです。
以前は、Commons Codecを利用していました。

以下に、簡単なサンプルをコードを載せておきます。


Seasar2(S2Container)に含まれている「org.seasar.framework.util.Base64Util」を使用する例
view plaincopy to clipboardprint?
public static void main(String[] args) {

   String sInTestStr = "あいうえお";  
   byte[] inTestStrByte = sInTestStr.getBytes();  
     
   // 文字列をBase64にエンコード  
   String sOutTestStr = Base64Util.encode(inTestStrByte);  
     
   // Base64にエンコードした結果を出力  
   System.out.println(sOutTestStr);  
     
   // Base64にエンコードした結果をデコード  
   inTestStrByte = Base64Util.decode(sOutTestStr);  
     
   // デコードした結果を出力  
   sInTestStr = new String(inTestStrByte);  
   System.out.println(sInTestStr);  
}

Commons Codecに含まれている「org.apache.commons.codec.binary.Base64」を使用する例
view plaincopy to clipboardprint?
public static void main1(String[] args) {

   String sInTestStr = "あいうえお";  
   byte[] inTestStrByte = sInTestStr.getBytes();  
     
   // 文字列をBase64にエンコード  
   byte[] outTestStrBtye  
             = Base64.encodeBase64(inTestStrByte);

   // Base64にエンコードした結果を出力  
   String sOutTestStr = new String(outTestStrBtye);  
   System.out.println(sOutTestStr);  
 
   // Base64にエンコードした結果をデコード  
   outTestStrBtye = sOutTestStr.getBytes();  
   inTestStrByte = Base64.decodeBase64(outTestStrBtye);  
 
   // デコードした結果を出力  
   sInTestStr = new String(inTestStrByte);  
   System.out.println(sInTestStr);  
}
最終更新:2012年10月23日 17:05