はじめに
この実験では、java.util.Base64
クラスと Apache Commons ライブラリを使用して Java で Base64 データをエンコードおよびデコードする方法を学びます。
この実験では、java.util.Base64
クラスと Apache Commons ライブラリを使用して Java で Base64 データをエンコードおよびデコードする方法を学びます。
このステップでは、新しい Java ファイルを作成します。ターミナルを開き、次のコマンドを実行して新しい Java ファイルを作成します。
touch ~/project/Base64Encoding.java
このコマンドにより、~/project
ディレクトリ内に Base64Encoding.java
という名前の新しいファイルが作成されます。好きな名前を使っても構いませんが、.java
で終わることを確認してください。
このステップでは、基本的なエンコードとデコードについて学びます。
getEncoder()
メソッドを使用します。encodeToString()
メソッドを使用します。エンコードされた文字列をデコードするには、getDecoder()
メソッドによって返される Base64.Decoder を使用します。
decode()
メソッドを使用します。文字列をエンコードおよびデコードするには、次のコード ブロックを使用してください。
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // 文字列をバイト配列に変換する
// エンコード
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("エンコードされた文字列: " + encodedStr);
// デコード
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("デコードされた文字列: " + decodedStr);
}
}
コードをコンパイルして実行するには、ターミナルで次のコマンドを実行します。
javac Base64Encoding.java && java Base64Encoding
前のステップでは、エンコードがエンコードされた文字列の末尾にパディング文字(=)を追加することを見ました。このステップでは、パディング文字なしでエンコードする方法を学びます。
パディングなしで文字列をエンコードするには、次のコード ブロックを使用してください。
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // 文字列をバイト配列に変換する
// パディングなしでエンコード
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("エンコードされた文字列: " + encodedStr);
}
}
コードをコンパイルして実行するには、ターミナルで次のコマンドを実行します。
javac Base64Encoding.java && java Base64Encoding
このステップでは、URL とファイル名用のセーフなエンコードとデコードについて学びます。
Base64 クラスは、URL とファイル名用のセーフな Base64 アルファベット を使用して URL のエンコードとデコードを行います。
getUrlEncoder()
メソッドを使用します。encodeToString()
メソッドを使用します。同様に、URL 用のデコーダを返す getUrlDecoder()
メソッドもあります。
decode()
メソッドを使用してデコードを行うことができます。URL をエンコードおよびデコードするには、次のコード ブロックを使用してください。
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// エンコード
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("エンコードされた URL: " + encodedUrl);
// デコード
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("デコードされた URL: " + decodedUrl);
}
}
コードをコンパイルして実行するには、ターミナルで次のコマンドを実行します。
javac Base64Encoding.java && java Base64Encoding
このステップでは、MIME エンコードとデコードについて学びます。
エンコードには、getMimeEncoder()
と encodeToString()
メソッドを使用できます。
デコードするには、getMimeDecoder()
メソッドを使用してデコーダを取得し、その後 decode()
メソッドを使用します。
MIME データをエンコードおよびデコードするには、次のコード ブロックを使用してください。
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// エンコード用の MIME 入力を作成する
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// エンコード
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("エンコードされた文字列: " + mimeEncodedStr);
// デコード
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
コードをコンパイルして実行するには、ターミナルで次のコマンドを実行します。
javac Base64Encoding.java && java Base64Encoding
このステップでは、Apache Commons ライブラリを使って Base64 データをエンコードおよびデコードする方法を学びます。
Apache Commons ライブラリは、org.apache.commons.codec.binary
パッケージ内に Base64 クラスを提供しています。
encode()
と decode()
メソッドを使ってエンコードとデコードを行うことができます。Apache Commons Base64 クラスを使って文字列をエンコードおよびデコードするには、次のコード ブロックを使用してください。
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// エンコード
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("エンコードされた文字列: " + encodedStr);
// デコード
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("デコードされた文字列: " + decodedStr);
// 静的メソッド encodeBase64() と decodeBase64() を使って直接 API にアクセスする
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
コードをコンパイルして実行するには、ターミナルで次のコマンドを実行します。
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
注: このコードを実行するには、Apache Commons Codec ライブラリの .jar
ファイルをダウンロードしてクラスパスにインポートする必要があります。上のコマンドでは、ライブラリのクラスパスを指定するために -cp commons-codec-1.15.jar
を追加しています。
この実験では、java.util.Base64
クラスと Apache Commons ライブラリを使って Java で Base64 データをエンコードおよびデコードする方法を学びました。Basic、URL、およびファイル名用のセーフ、および MIME の 3 つの異なる Base64 エンコードおよびデコード方式について説明しました。