260 votes

En Base 64 coder et décoder un code d'exemple

Personne ne sait comment les décoder et encoder une chaîne en Base64 à l'aide de la Base64 classe dans Android? S'il vous plaît aider avec un exemple de code.

Pouvez-vous me donner le code exact; ce serait une grande aide. Je suis en utilisant le code suivant, mais ça ne fonctionne pas.

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)));

559voto

Jon Skeet Points 692016

D'abord:

  • Choisir un encodage (UTF-8 est généralement un bon choix)

Fin de transmission:

  • Encoder la chaîne d'octets (par exemple, text.getBytes(encodingName))
  • Encoder les octets en base64 à l'aide de l' Base64 classe
  • Transmettre le base64

Fin de réception:

  • Recevoir le base64
  • Décoder le base64 d'octets à l'aide de l' Base64 classe
  • Décoder les octets d'une chaîne de caractères (par exemple, new String(bytes, encodingName))

EDIT: Donc quelque chose comme:

// 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");

20voto

Dunfield Points 241

À quelqu'un d'autre qui a atterri ici en cherchant de l'info sur comment décoder une chaîne de caractères codés avec Base64.encodeBytes(), voici ma solution:

// encode
String ps = "techPass";
String tmp = Base64.encodeBytes(ps.getBytes());

// decode
String ps2 = "dGVjaFBhC3M=";
byte[] tmp2 = Base64.decode(ps2); 
String val2 = new String(tmp2, "UTF-8"); 

Aussi, je suis en charge des versions antérieures d'Android donc je suis en utilisant Robert plus Difficile est Base64 de la bibliothèque de http://iharder.net/base64

7voto

DonGru Points 6677

quelque chose comme

String source = "password"; 
byte[] byteArray;
try {
    byteArray = source.getBytes("UTF-16");
    System.out.println(new String(Base64.decode(Base64.encode(byteArray,
           Base64.DEFAULT), Base64.DEFAULT)));
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

0voto

user2685512 Points 1

ne pouvait pas dire comment faire l'opération inverse

int k = (byte) (arrayOfByte [i] ^ 0xFF); arrayOfByte [i] = (byte) k;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X