Как декодировать Base64 онлайн (и что означает результат)
У вас есть строка из, казалось бы, случайных букв и цифр, возможно, заканчивающаяся одним или двумя знаками равенства, и вам нужно знать, что она говорит. Это почти наверняка Base64, и его декодирование показывает исходный текст или данные. Вот как декодировать Base64, о чем говорит результат, а также два варианта, которые приводят к сбою декодеров.
Как это расшифровать
Декодирование Base64 происходит мгновенно: вставьте закодированную строку в декодер, и он преобразует ее обратно в исходный текст. Base64 полностью обратима, это кодировка, а не шифрование, поэтому ключ не требуется, и любой может декодировать любую строку Base64 за секунду. Если результатом является читаемый текст, у вас есть ответ. Если результат выглядит как двоичный мусор, исходные данные не были текстом, это могло быть изображение, файл или зашифрованные данные, которые затем были закодированы в Base64, и в этом случае декодированные байты не предназначены для чтения как текст.
Зачем вам нужно декодировать Base64
Base64 появляется во многих местах, которые вам, возможно, придется проверить. Заголовок и полезные данные токена аутентификации JWT закодированы в формате Base64, и их декодирование позволяет обнаружить содержащиеся в нем утверждения. Учетные данные базовой аутентификации HTTP — Base64 в заголовке авторизации. URL-адреса данных включают изображения в кодировке Base64. Источник электронной почты показывает вложения в кодировке Base64. Файлы конфигурации и ответы API иногда содержат данные Base64. При отладке любого из них декодирование позволяет увидеть то, что есть на самом деле, а не стену закодированных символов.
Юникод попался
Если ваш декодированный текст выглядит искаженным там, где должны быть акценты или неанглийские символы, проблема заключается в обработке Юникода. Base64 кодирует байты, и текст сначала необходимо преобразовать в байты с помощью кодировки, например UTF-8. Декодер, который предполагает простой ASCII, будет искажать буквы с диакритическими знаками, эмодзи и нелатинские буквы. Правильный декодер интерпретирует байты как UTF-8, поэтому «кафе» и «こんにちは» декодируются правильно. Если вы видите моджибаке, искаженные символы, это означает, что кодер или декодер неправильно обработал шаг Юникода.
URL-безопасный вариант
Если декодер отклоняет вашу строку или выдает неправильный вывод, это может быть Base64url, безопасный для URL-адресов вариант. Стандартный Base64 использует символы + и /, но они вызывают проблемы в URL-адресах, поэтому Base64url заменяет + на - и / на _ и часто отбрасывает дополнение =. JWT используют этот вариант. Строгий стандартный декодер может захлебнуться из-за - и _ или из-за отсутствия заполнения. Исправление состоит в том, чтобы преобразовать - обратно в +, _ обратно в / и восстановить заполнение перед декодированием или использовать инструмент, который автоматически обрабатывает оба варианта.
Помните: декодирование — это не расшифровка.
Один важный момент. Декодирование Base64 раскрывает все, что было закодировано, без необходимости использования ключа, что означает, что Base64 не обеспечивает никакой безопасности. Если вы можете его расшифровать, то сможет и любой другой. Вот почему вам никогда не следует хранить пароли или секреты в формате Base64, думая, что они скрыты; они тривиально читабельны. Декодирование полезных данных JWT показывает утверждения, но не проверяет токен, что требует проверки подписи с помощью секретного ключа (отдельный шаг). Base64 предназначен для представления, а не для защиты.