Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как закодировать и раскодировать Base64

Короткий ответ

Base64 превращает байты в текст из латинских букв, цифр и знаков +, /, =. Строку сначала переведите в байты:

void main() {
    String text = "Hello, Java!";
    String encoded = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
 
    IO.println(encoded);
}

Результат:

SGVsbG8sIEphdmEh

Обратно

Декодер возвращает массив байтов — из него снова сделайте строку:

void main() {
    byte[] bytes = Base64.getDecoder().decode("SGVsbG8sIEphdmEh");
    IO.println(new String(bytes, StandardCharsets.UTF_8));
}

Результат:

Hello, Java!

Для адресов и токенов

Обычный Base64 содержит + и /, которые в адресах имеют особый смысл. Вариант для URL заменяет их на - и _:

void main() {
    byte[] data = {(byte) 0xfb, (byte) 0xff, (byte) 0xbf};
 
    IO.println(Base64.getEncoder().encodeToString(data));
    IO.println(Base64.getUrlEncoder().withoutPadding().encodeToString(data));
}

Результат:

+/+/
-_-_

Частая ошибка

Считать Base64 шифрованием. Это просто другая запись данных: любой может раскодировать строку обратно без ключа. А строка с недопустимыми символами вызывает исключение:

void main() {
    Base64.getDecoder().decode("not base64!");
}

Результат:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal base64 character 20

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.