388 Stimmen

Kodierung als Base64 in Java

Ich muss einige Daten in der Base64-Kodierung in Java kodieren. Wie kann ich das tun? Wie lautet der Name der Klasse, die einen Base64-Encoder bereitstellt?


Ich habe versucht, die sun.misc.BASE64Encoder Klasse, ohne Erfolg. Ich habe die folgende Zeile von Java 7 Code:

wr.write(new sun.misc.BASE64Encoder().encode(buf));

Ich verwende Eclipse. Eclipse markiert diese Zeile als einen Fehler. Ich habe die erforderlichen Bibliotheken importiert:

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;

Aber auch hier werden beide als Fehler angezeigt. Ich fand ein ähnlicher Beitrag hier .

Ich habe Apache Commons als die von including vorgeschlagene Lösung verwendet:

import org.apache.commons.*;

und importieren die heruntergeladenen JAR-Dateien: http://commons.apache.org/codec/

Aber das Problem besteht weiterhin. Eclipse zeigt immer noch die bereits erwähnten Fehler an. Was sollte ich tun?

8voto

holmis83 Punkte 14947

Wenn Sie Folgendes verwenden Spring Framework mindestens Version 4.1, können Sie die org.springframework.util.Base64Utils Klasse:

byte[] raw = { 1, 2, 3 };
String encoded = Base64Utils.encodeToString(raw);
byte[] decoded = Base64Utils.decodeFromString(encoded);

Er delegiert an den Base64 von Java 8, den Apache Commons Codec oder den JAXB DatatypeConverter, je nachdem, was verfügbar ist.

7voto

faisalbhagat Punkte 2084

Apache Commons hat eine gute Implementierung von Base64. Sie können dies so einfach tun wie:

// Encrypt data on your side using BASE64
byte[] bytesEncoded = Base64.encodeBase64(str .getBytes());
System.out.println("ecncoded value is " + new String(bytesEncoded));

// Decrypt data on other side, by processing encoded data
byte[] valueDecoded= Base64.decodeBase64(bytesEncoded );
System.out.println("Decoded value is " + new String(valueDecoded));

Weitere Details zur base64-Kodierung finden Sie unter Base64-Kodierung mit Java und JavaScript .

6voto

z3d0 Punkte 413

Einfaches Beispiel mit Java 8:

import java.util.Base64;

String str = "your string";
String encodedStr = Base64.getEncoder().encodeToString(str.getBytes("utf-8"));

6voto

Daniel De León Punkte 12365

In Java 7 habe ich diese Methode programmiert

import javax.xml.bind.DatatypeConverter;

public static String toBase64(String data) {
    return DatatypeConverter.printBase64Binary(data.getBytes());
}

4voto

auselen Punkte 26562

Wenn Sie eine frühere Version von Java als 8 verwenden, aber bereits AWS SDK für Java können Sie verwenden com.amazonaws.util.Base64 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X