web-dev-qa-db-fra.com

Décoder une chaîne en Base64 en Java

J'essaie de décoder une chaîne Base64 simple, mais je ne peux pas le faire. J'utilise actuellement le org.Apache.commons.codec.binary.Base64 paquet.

La chaîne de test que j'utilise est la suivante: abcdefg, codé à l'aide de PHP YWJjZGVmZw==.

C'est le code que j'utilise actuellement:

Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;   

Le code ci-dessus ne génère pas d'erreur, mais ne génère pas la chaîne décodée comme prévu.

56
TomasB

Modifiez le package que vous utilisez:

import org.Apache.commons.codec.binary.Base64;

Et puis utilisez-le comme ceci:

byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
64
RTB

Ce qui suit devrait fonctionner avec la dernière version du codec commun Apache.

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));

et pour l'encodage

byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
8
Hany Sakr

Communément base64 il est utilisé pour les images. si vous souhaitez décoder une image (jpg dans cet exemple avec le package org.Apache.commons.codec.binary.Base64):

byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
3
Alberto Perez

Si vous ne voulez pas utiliser Apache, vous pouvez utiliser Java8:

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw=="); 
System.out.println(new String(decodedBytes) + "\n");
2
Denys