logo

Java Base64 エンコードとデコード

Java は、暗号化を処理するクラス Base64 を提供します。提供されたメソッドを使用してデータを暗号化および復号化できます。そのメソッドを使用するには、ソース ファイルに java.util.Base64 をインポートする必要があります。

このクラスは、各レベルで情報を暗号化するための 3 つの異なるエンコーダーとデコーダーを提供します。これらのメソッドは次のレベルで使用できます。


基本的なエンコーディングとデコーディング

エンコードおよびデコード操作には、Java によって RFC 4648 および RFC 2045 で指定されている Base64 アルファベットが使用されます。エンコーダは行区切り文字を追加しません。デコーダは、base64 アルファベット以外の文字を含むデータを拒否します。


URL とファイル名のエンコーディングとデコーディング

エンコードおよびデコード操作には、RFC 4648 で Java によって指定された Base64 アルファベットが使用されます。エンコーダは行区切り文字を追加しません。デコーダは、base64 アルファベット以外の文字を含むデータを拒否します。


マイム

エンコードおよびデコード操作には、RFC 2045 で指定されている Base64 アルファベットが使用されます。エンコードされた出力は、各行が 76 文字以内で表現される必要があり、改行 ' ' の直後にキャリッジ リターン ' ' を行区切り文字として使用します。エンコードされた出力の末尾には行区切り文字は追加されません。 Base64 アルファベット テーブルにないすべての行区切り文字やその他の文字は、デコード操作では無視されます。


Base64 の入れ子クラス

クラス 説明
Base64.デコーダ このクラスは、RFC 4648 および RFC 2045 で指定されている Base64 エンコード スキームを使用してバイト データをデコードするためのデコーダを実装します。
Base64.エンコーダ このクラスは、RFC 4648 および RFC 2045 で指定されている Base64 エンコード スキームを使用してバイト データをエンコードするためのエンコーダーを実装します。

Base64メソッド

メソッド 説明
パブリック静的Base64.Decoder getDecoder() Basic タイプの Base64 エンコード スキームを使用してデコードする Base64.Decoder を返します。
パブリック静的Base64.Encoder getEncoder() Basic タイプの Base64 エンコード スキームを使用してエンコードする Base64.Encoder を返します。
パブリック静的Base64.Decoder getUrlDecoder() URL およびファイル名セーフ タイプの Base64 エンコード スキームを使用してデコードする Base64.Decoder を返します。
パブリック静的Base64.Decoder getMimeDecoder() MIME タイプの Base64 デコード スキームを使用してデコードする Base64.Decoder を返します。
パブリック静的Base64.Encoder getMimeEncoder() MIME タイプの Base64 エンコード スキームを使用してエンコードする Base64.Encoder を返します。
public static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator) これは、指定された行長と行区切り文字を持つ MIME タイプの Base64 エンコード スキームを使用してエンコードする Base64.Encoder を返します。
パブリック静的Base64.Encoder getUrlEncoder() URL およびファイル名セーフ タイプの Base64 エンコード スキームを使用してエンコードする Base64.Encoder を返します。

Base64.Decoder メソッド

メソッド 説明
public byte[] decode(byte[] src) Base64 エンコーディング スキームを使用して入力バイト配列からすべてのバイトをデコードし、新しく割り当てられた出力バイト配列に結果を書き込みます。返されるバイト配列は、結果のバイトの長さになります。
public byte[] decode(String src) Base64 エンコード スキームを使用して、Base64 エンコードされた String を新しく割り当てられたバイト配列にデコードします。
public int decode(byte[] src, byte[] dst) Base64 エンコード スキームを使用して入力バイト配列からすべてのバイトをデコードし、その結果を指定された出力バイト配列にオフセット 0 から書き込みます。
public ByteBuffer デコード(ByteBuffer バッファ) Base64 エンコーディング スキームを使用して入力バイト バッファーからすべてのバイトをデコードし、新しく割り当てられた ByteBuffer に結果を書き込みます。
public InputStream ラップ(InputStream は) Base64 でエンコードされたバイト ストリームをデコードするための入力ストリームを返します。

Base64.Encoder メソッド

メソッド 説明
public byte[] encode(byte[] src) Base64 エンコード スキームを使用して、指定されたバイト配列のすべてのバイトを新しく割り当てられたバイト配列にエンコードします。返されるバイト配列は、結果のバイトの長さになります。
public int encode(byte[] src, byte[] dst) Base64 エンコード スキームを使用して指定されたバイト配列のすべてのバイトをエンコードし、結果のバイトを指定された出力バイト配列にオフセット 0 から書き込みます。
public String encodeToString(byte[] src) Base64 エンコード スキームを使用して、指定されたバイト配列を String にエンコードします。
public ByteBuffer encode(ByteBuffer バッファ) Base64 エンコード スキームを使用して、指定されたバイト バッファーの残りのすべてのバイトを新しく割り当てられた ByteBuffer にエンコードします。戻ると、ソース バッファの位置はその限界まで更新されます。その制限は変更されません。返される出力バッファの位置はゼロになり、その制限は結果として得られるエンコードされたバイト数になります。
パブリック OutputStream ラップ(OutputStream os) Base64 エンコード スキームを使用してバイト データをエンコードするための出力ストリームをラップします。
public Base64.Encoder withoutPadding() これは、これと同等にエンコードするエンコーダ インスタンスを返しますが、エンコードされたバイト データの末尾にパディング文字は追加されません。

Java Base64 の例: 基本的なエンコーディングとデコーディング

 import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting encoder Base64.Encoder encoder = Base64.getEncoder(); // Creating byte array bytebyteArr[] = {1,2}; // encoding byte array bytebyteArr2[] = encoder.encode(byteArr); System.out.println('Encoded byte array: '+byteArr2); bytebyteArr3[] = newbyte[5]; // Make sure it has enough size to store copied bytes intx = encoder.encode(byteArr,byteArr3); // Returns number of bytes written System.out.println('Encoded byte array written to another array: '+byteArr3); System.out.println('Number of bytes written: '+x); // Encoding string String str = encoder.encodeToString('JavaTpoint'.getBytes()); System.out.println('Encoded string: '+str); // Getting decoder Base64.Decoder decoder = Base64.getDecoder(); // Decoding string String dStr = new String(decoder.decode(str)); System.out.println('Decoded string: '+dStr); } } 

出力:

 Encoded byte array: [B@6bc7c054 Encoded byte array written to another array: [B@232204a1 Number of bytes written: 4 Encoded string: SmF2YVRwb2ludA== Decoded string: JavaTpoint 

Java Base64 の例: URL エンコーディングとデコーディング

 import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting encoder Base64.Encoder encoder = Base64.getUrlEncoder(); // Encoding URL String eStr = encoder.encodeToString('http://www.javatpoint.com/java-tutorial/'.getBytes()); System.out.println('Encoded URL: '+eStr); // Getting decoder Base64.Decoder decoder = Base64.getUrlDecoder(); // Decoding URl String dStr = new String(decoder.decode(eStr)); System.out.println('Decoded URL: '+dStr); } } 

出力:

 Encoded URL: aHR0cDovL3d3dy5qYXZhdHBvaW50LmNvbS9qYXZhLXR1dG9yaWFsLw== Decoded URL: http://www.javatpoint.com/java-tutorial/ 

Java Base64 の例: MIME エンコーディングとデコーディング

 package Base64Encryption; import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting MIME encoder Base64.Encoder encoder = Base64.getMimeEncoder(); String message = 'Hello, 
You are informed regarding your inconsistency of work'; String eStr = encoder.encodeToString(message.getBytes()); System.out.println('Encoded MIME message: '+eStr); // Getting MIME decoder Base64.Decoder decoder = Base64.getMimeDecoder(); // Decoding MIME encoded message String dStr = new String(decoder.decode(eStr)); System.out.println('Decoded message: '+dStr); } } 

出力:

 Encoded MIME message: SGVsbG8sIApZb3UgYXJlIGluZm9ybWVkIHJlZ2FyZGluZyB5b3VyIGluY29uc2lzdGVuY3kgb2Yg d29yaw== Decoded message: Hello, You are informed regarding your inconsistency of work