D'accord, je sais comment le faire en C #.
C'est aussi simple que:
Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.
Comment puis-je faire cela en Java?
Encodez ou décodez des tableaux d'octets:
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"
Ou si vous voulez juste les chaînes:
String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded) // Outputs "Hello"
Pour plus d'informations, consultez Base64 .
Base64 n'est pas fourni avec les versions Java inférieures à 8. Je recommande d'utiliser Apache Commons Codec .
Pour les tableaux d'octets directs:
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"
Ou si vous voulez juste les chaînes:
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"
Si vous travaillez déjà dans un projet Spring, vous trouverez peut-être leur org.springframework.util.Base64Utils
classe plus ergonomique:
Pour les tableaux d'octets directs:
byte[] encoded = Base64Utils.encode("Hello".getBytes());
println(new String(encoded)) // Outputs "SGVsbG8="
byte[] decoded = Base64Utils.decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Ou si vous voulez juste les chaînes:
String encoded = Base64Utils.encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = Base64Utils.decodeFromString(encoded);
println(new String(decoded)) // Outputs "Hello"
Si vous utilisez le SDK Android avant Java 8, la meilleure option consiste à utiliser le kit android.util.Base64
.
Pour les tableaux d'octets directs:
byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded)) // Outputs "SGVsbG8="
byte [] decoded = Base64.decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Ou si vous voulez juste les chaînes:
String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = new String(Base64.decode(encoded));
println(decoded) // Outputs "Hello"
Utilisation:
byte[] data = Base64.encode(base64str);
L'encodage se convertit en Base64
Vous devrez référencer le codec commun de votre projet pour que ce code fonctionne.
Pour java8 :
import java.util.Base64
De plus, pour nos amis Android (niveau API 8):
la source
Dans le cas où vous utilisez le framework Spring avec Java, il existe un moyen simple de contourner le problème.
Importez les éléments suivants.
Convertissez comme ça.
Pour décoder, vous pouvez utiliser la méthode decodeToString de la classe Base64Utils.
la source