JavaでBase64文字列をエンコード/デコードする

  • このエントリーをはてなブックマークに追加
  • 0

今回はプチネタ。
Javaで、Base64エンコードをしたり、デコードしたりする。
これには、Commons Codecというライブラリを使う。

こいつにはBase64エンコード/デコード他、色々と便利な機能がある。
例えば、byte[]型の値を、16進文字列に変えてくれる機能もある。

では、以下にサンプルを示そう。

  1. import org.apache.commons.codec.binary.Base64;
  2. import org.apache.commons.codec.binary.Hex;
  3.  
  4. public class Base64Samples {
  5.     public static void main(String[] args) {
  6.         String str = "あいうえお";
  7.         byte[] encoded = Base64.encodeBase64(str.getBytes());//エンコード処理
  8.         String encodedStr = Hex.encodeHexString(encoded);//エンコード結果のbyte[]を文字列にする
  9.         byte[] decoded = Base64.decodeBase64(encoded);//デコード処理
  10.         String decodedStr = new String(decoded);//デコード結果のbyte[]を文字列にする
  11.        
  12.         System.out.println(encodedStr + ":" + decodedStr);
  13.        
  14.     }
  15. }

このようになる。以下に詳しく説明していく。

byte[] Base64.encodeBase64(byte[])

このメソッドは文字列のBase64エンコード処理を行う。
注意点は、入力がbyte[]だという事。文字列を入れる場合は、getBytes()を使う必要がある。
そして、出力結果もbyte[]なので、そのまま他の事に使う場合はいいが、
文字列と連結する場合には、次の「Hex.encodeHexString」を使う。

byte[] Hex.encodeHexString(byte[])

このメソッドは、byte[]を、16進文字列にする。
例えば{15,0}であれば、「0f00」になる。
こいつを使えば、エンコードしたbyte[]を文字列と連結したり、
出力できるようになる。

byte[] Base64.decodeBase64((byte[])

このメソッドはBase64デコード処理を行う。
エンコードしたバイト列を元に戻す事ができる。
ここで注意が必要なのだが、戻り値がbyte[]だということだ。
文字列化するには、new String()の引数にしてやる必要がある。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク