web-dev-qa-db-fra.com

Encodeur et décodeur Base64

Existe-t-il un décodeur et un encodeur base-64 pour une chaîne sous Android?

48
xydev

Voir Android.util.Base64

Il semble que cela ait été ajouté dans l'API version 8 ou Android 2.2 donc il ne sera pas disponible sur les anciennes plates-formes.

Mais sa source est à Android/util/Base64.Java donc si nécessaire, il suffit de le copier tel quel pour les anciennes versions.

31
Dan D.

Voici un exemple d'utilisation du Base64 classe pour encoder et décoder une simple valeur de chaîne.

// String to be encoded with Base64
String text = "Test";
// Sending side
byte[] data = null;
try {
    data = text.getBytes("UTF-8");
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data1 = Base64.decode(base64, Base64.DEFAULT);
String text1 = null;
try {
    text1 = new String(data1, "UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

Cet extrait peut être inclus dans une activité Android.

72
blackpanther

Pour encoder:

private String encodeString(String s) {
    byte[] data = new byte[0];

    try {
        data = s.getBytes("UTF-8");

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } finally {
        String base64Encoded = Base64.encodeToString(data, Base64.DEFAULT);

        return base64Encoded;

    }
}

Pour décoder:

private String decodeString(String encoded) {
    byte[] dataDec = Base64.decode(encoded, Base64.DEFAULT);
    String decodedString = "";
    try {

        decodedString = new String(dataDec, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();

    } finally {

        return decodedString;
    }
}

Exemple

    String text = "example007";

    Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
    Log.e("decoded", decodeString(encodeString(text))); //Output: example007
10
CommonSenseCode

Voici une méthode simple que j'allais utiliser jusqu'à ce que je réalise que cela n'est pris en charge que dans Android API 8 +:

// Has line break
public String getBase64(String input) {
    return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}

// No line break
public String getBase64(String input) {
    return Base64.encodeToString(input.getBytes(), Base64.NO_WRAP);
}
8
Jared Burrows

Si vous ne pas voulez un saut de ligne à la fin de la chaîne, changez les indicateurs de Base64.DEFAULT à Base64.NO_WRAP

Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
4
Hugo Gresse

décodage base64 cela peut nous aider tous.

3
xydev