Подтвердить что ты не робот

Декодирование строки Base64 в Java

Я пытаюсь декодировать простую строку Base64, но не могу этого сделать. В настоящее время я использую пакет org.apache.commons.codec.binary.Base64.

Используемая тестовая строка: abcdefg, закодированная с использованием PHP YWJjZGVmZw==.

Это код, который я использую в настоящее время:

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

Вышеприведенный код не выдает ошибку, но вместо этого не выводит декодированную строку, как ожидалось.

4b9b3361

Ответ 1

Измените пакет, который вы используете:

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

И затем используйте его следующим образом:

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

Ответ 2

Следующее должно работать с последней версией общего кодека Apache

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

и для кодирования

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

Ответ 3

Обычно base64 используется для изображений. если вы хотите декодировать изображение (jpg в этом примере с пакетом 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();

Ответ 4

Если вы не хотите использовать apache, вы можете использовать Java8:

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