Что такое кодирование Base64 и для чего оно используется?

«Что такое кодирование Base64 и для чего оно используется?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Base64 — это схема кодирования, которая преобразует любые двоичные данные в строку, состоящую только из печатных ASCII-символов (A-Z, a-z, 0-9, +, /). Это позволяет безопасно передавать бинарные данные (например, изображения, файлы) через протоколы, предназначенные для текста (HTTP, JSON, XML, email).

Пример кодирования и декодирования в Java:

import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String originalData = "Hello, Java!";

        // Кодирование
        String encodedString = Base64.getEncoder()
                                    .encodeToString(originalData.getBytes());
        System.out.println("Encoded: " + encodedString); // SGVsbG8sIEphdmEh

        // Декодирование
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("Decoded: " + decodedString); // Hello, Java!
    }
}

Ключевые особенности:

  • Увеличение объема: Размер данных увеличивается примерно на 33%.
  • Паддинг (=): В конце закодированной строки могут добавляться символы = для выравнивания длины.
  • URL-safe вариант: Base64.getUrlEncoder() использует - и _ вместо + и /, чтобы строка могла быть частью URL или параметра запроса.