Перейти к содержимому
DeepBase64

Почему мой декодированный base64 выглядит как мусор?

Вы что-то декодировали и получили череду бессмысленных символов, вопросительных знаков или символов замены. У этого две довольно разные причины, и они требуют противоположных действий, поэтому стоит понять, с какой вы имеете дело.

Первая: ваш ввод изначально не был base64. Алфавит base64 — это буквы, цифры, плюс и косая черта, а значит, очень много обычного текста проходит как допустимый base64 по одной лишь форме. Шестнадцатеричный дайджест, UUID без дефисов, хеш коммита git и простые английские слова вроде "test" или "Password" проходят любую проверку символов. Декодировать их — законная операция, дающая байты, которые никогда не были текстом, поэтому результат — шум. Декодер не дал сбой: он ответил на вопрос, который вы не собирались задавать.

Вторая: ввод действительно был base64, а полезная нагрузка просто не является текстом. Base64 существует, чтобы проносить произвольные байты через каналы, принимающие только символы, и эти байты часто оказываются изображением, сжатым архивом, сертификатом, сообщением protobuf или зашифрованным блоком. Декодирование сработало безупречно. То, что вышло, никогда не предназначалось для чтения как буквы.

Обычно их различают по первым байтам результата. PNG начинается с букв PNG после одного непечатаемого байта; поток gzip начинается с двух фиксированных байтов; PDF несёт видимую метку в начале; сертификат в форме DER начинается с байта структуры, а не с чего-либо читаемого. Если вывод начинается с узнаваемой сигнатуры, у вас настоящие данные в формате, а не неудачное декодирование.

Вторая проверка — обратимость. Закодируйте результат снова и сравните с тем, с чего начинали. Настоящий base64 проходит этот путь без изменений. Значение, которое лишь имело форму base64, обычно нет, потому что его длина или дополнение никогда не выходили из кодировщика.

Важнее всего это для инструментов, декодирующих повторно. Тот, что продолжает, пока ввод ещё выглядит декодируемым, рано или поздно уничтожит вполне исправное значение, декодировав его на раз больше, и сообщит число слоёв, включающее слой, которого не было. Остановиться в правильном месте и сказать почему — это и есть по-настоящему трудная часть.

Открыть декодер