Как пользоваться
- Вставьте строку Base64 в поле ввода. Base64 уже выбран в качестве исходной кодировки, а шестнадцатеричный формат — в качестве целевой.
- Получите результат в шестнадцатеричном виде: по две шестнадцатеричные цифры на каждый байт.
- Если нужен другой формат, выберите другую целевую кодировку, например Base58 или Base32. Чтобы перевести hex обратно в Base64, нажмите «Поменять ввод и вывод местами».
- Скопируйте результат.
Две записи одних и тех же байтов
И шестнадцатеричная запись, и Base64 представляют двоичные данные в виде текста. В шестнадцатеричной записи на каждый байт уходит два символа, поэтому значения отдельных байтов легко читать и сравнивать. Base64 упаковывает 3 байта в 4 символа и получается примерно на треть короче. Преобразование из одной записи в другую меняет только форму, а сами данные остаются прежними:
| Значение | Байтов | Длина в hex | Длина в Base64 |
|---|---|---|---|
| Хеш MD5 | 16 | 32 | 24 |
| Хеш SHA-1 | 20 | 40 | 28 |
| Хеш SHA-256, открытый ключ Ed25519 | 32 | 64 | 44 |
| Хеш SHA-384 | 48 | 96 | 64 |
| Хеш SHA-512, подпись Ed25519 | 64 | 128 | 88 |
Кроме того, именно в шестнадцатеричном виде данные показывают hex-редакторы, анализаторы сетевого трафика и отладчики, поэтому перевод Base64 в hex позволяет сопоставить данные с тем, что выводят эти инструменты.
Когда Base64 нужно перевести в hex
- Сравнение хешей. Утилиты вроде
sha256sumвыводят hex, а атрибуты Subresource Integrity, хеши Content Security Policy и заголовки с контрольными суммами, такие какContent-MD5, используют Base64. Чтобы сравнить значения, переведите одно из них в формат другого. - Отпечатки SSH.
ssh-keygen -lвыводит отпечаткиSHA256:в виде Base64 без дополнения, а DNS-записи SSHFP хранят тот же дайджест SHA-256 в hex. Вставьте часть послеSHA256:, чтобы получить шестнадцатеричную форму. - Ключи, векторы инициализации и подписи. При отладке криптографического кода байты в hex позволяют легко проверить длину, сравнить значения и заметить лишний или пропущенный байт.
Какие входные данные принимает конвертер
Пробелы и переводы строк во входных данных Base64 игнорируются, безопасные для URL символы - и _ принимаются, а дополнение = необязательно, поэтому значения, скопированные из JSON, JWT или вывода терминала, можно вставлять как есть. Преобразуются декодированные байты: результат — это hex самих данных, а не символов Base64. Чтобы увидеть шестнадцатеричные коды фрагмента текста, воспользуйтесь инструментом Base16.
# Командная строка
printf '%s' "$B64" | base64 --decode | xxd -p
# Python
base64.b64decode(s).hex()
// Node.js
Buffer.from(s, 'base64').toString('hex')
Часто задаваемые вопросы
Что преобразуется: текст Base64 или байты, которые он представляет?
Почему результат в hex длиннее исходной строки Base64?
В шестнадцатеричной записи на байт нужно 2 символа, а в Base64 — около 1,33. 32-байтовый дайджест SHA-256 занимает 44 символа в Base64 и 64 символа в hex.
Как получить hex в верхнем регистре или с двоеточиями между байтами?
Можно ли преобразовать значения Base64URL из JWT или JSON Web Key?
Да. Безопасные для URL символы и отсутствующее дополнение обрабатываются автоматически, поэтому параметры ключей и подписи можно вставлять без изменений.