1. ホーム

[解決済み】Base64エンコードとデコードのサンプルコード

2022-04-04 10:25:48

質問

Base64で文字列をデコード、エンコードする方法をご存知の方はいらっしゃいますか?私は以下のコードを使っていますが、うまくいきません。

String source = "password"; 
byte[] byteArray = source.getBytes("UTF-16"); 
Base64 bs = new Base64(); 
//bs.encodeBytes(byteArray); 
System.out.println( bs.encodeBytes(byteArray)); 
//bs.decode(bs.encodeBytes(byteArray));
System.out.println(bs.decode(bs.encodeBytes(byteArray)));

解決方法は?

まず

  • エンコードを選択します。UTF-8は一般的に良い選択です。両側で確実に有効なエンコーディングにこだわってください。UTF-8やUTF-16以外を使用することは稀でしょう。

送信側。

  • 文字列をバイト単位でエンコードする(例 text.getBytes(encodingName) )
  • を使用してバイトをbase64にエンコードします。 Base64 クラス
  • base64を転送する

受信側

  • base64を受信する
  • を使用してbase64をバイトにデコードします。 Base64 クラス
  • バイトを文字列にデコードする (例) new String(bytes, encodingName) )

だから、こんな感じ。

// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

または StandardCharsets :

// Sending side
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);