Wie konvertiere ich ein Byte-Array in Java in Base64?

120

Okay, ich weiß, wie es in C # geht.

Es ist so einfach wie:

Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.

Wie kann ich das in Java machen?

Sorantis
quelle

Antworten:

223

Java 8+

Byte-Arrays codieren oder decodieren:

byte[] encoded = Base64.getEncoder().encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = Base64.getDecoder().decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Oder wenn Sie nur die Zeichenfolgen wollen:

String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded)    // Outputs "Hello"

Weitere Informationen finden Sie unter Base64 .

Java <8

Base64 wird nicht mit Java-Versionen unter 8 gebündelt. Ich empfehle die Verwendung von Apache Commons Codec .

Für Direktbyte-Arrays:

Base64 codec = new Base64();
byte[] encoded = codec.encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = codec.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Oder wenn Sie nur die Zeichenfolgen wollen:

Base64 codec = new Base64();
String encoded = codec.encodeBase64String("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(codec.decodeBase64(encoded));
println(decoded)    // Outputs "Hello"

Android (mit Java <8)

Wenn Sie das Android SDK vor Java 8 verwenden, ist es am besten, das mitgelieferte zu verwenden android.util.Base64.

Für Direktbyte-Arrays:

byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte [] decoded = Base64.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Oder wenn Sie nur die Zeichenfolgen wollen:

String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.decode(encoded));
println(decoded)    // Outputs "Hello"
Cory Klein
quelle
29

Verwenden:

byte[] data = Base64.encode(base64str);

Die Codierung wird in Base64 konvertiert

Sie müssten auf den Commons-Codec aus Ihrem Projekt verweisen , damit dieser Code funktioniert.

Für Java8 :

import java.util.Base64
Konstantin Spirin
quelle
21
Die Methoden zum Codieren / Decodieren der Klasse Base64 sind statisch, sodass Sie kein neues Objekt erstellen müssen. Dann: byte [] data = Base64.decode (base64str); reicht.
Ernesto Campohermoso
15

Zusätzlich für unsere Android-Freunde (API Level 8):

import android.util.Base64

...

Base64.encodeToString(bytes, Base64.DEFAULT);
Ton Snoei
quelle
7

Falls Sie Spring Framework zusammen mit Java verwenden, gibt es einen einfachen Weg.

  1. Importieren Sie Folgendes.

    import org.springframework.util.Base64Utils;
  2. Konvertieren Sie so.

    Byte [] Bytearr = {0,1,2,3,4};
    String encodedText = Base64Utils.encodeToString (bytearr);
    

    Zum Dekodieren können Sie die decodeToString-Methode der Base64Utils-Klasse verwenden.

Ihsan Izwer
quelle