Как перевести hex в Base64
- Вставьте hex в поле Ввод · Hex. Пробелы, переводы строк, двоеточия, дефисы и префиксы
0xили\xпропускаются, регистр не важен. - Результат сразу появляется в поле Результат · Base64.
- Под результатом снимите галочку Дополнение (=), если получателю нужен Base64 без дополнения, и выставьте Перенос строк на 64 (PEM) или 76 (MIME), если нужен вывод с переносами.
- Нажмите Скопировать результат или проверьте результат в обратную сторону переключателем Base64 → Hex. Страница Base64 в hex работает в обратном направлении.
Дайджесты хешей: hex и Base64
Хеш-функции возвращают «сырые» байты. Утилиты командной строки вроде sha256sum и md5sum печатают эти байты в hex, а многие протоколы ждут их в Base64. Дайджест один, записи две. Вот дайджесты пяти байтов hello:
| Хеш | Hex (из sha256sum и т. п.) | Base64 |
|---|---|---|
| MD5 | 5d41402abc4b2a76b9719d911017c592 | XUFAKrxLKna5cZ2REBfFkg== |
| SHA-1 | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d | qvTGHdzF6KLavt4PO0gs2a6pQ00= |
| SHA-256 | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= |
Где нужна запись в Base64:
- Subresource Integrity.
integrity="sha384-…"в теге<script>или<link>содержит дайджест в Base64. Генератор хеша SRI соберёт весь атрибут по файлу. - Заголовки
Content-MD5. RFC 1864 определяет значение как Base64 от 16-байтового дайджеста MD5, и объектные хранилища, которые проверяют загрузки по этому заголовку, отвергают запись в hex. См. MD5 в Base64. - Подписи и HMAC в API-запросах, которые обычно передаются в Base64. HMAC в Base64 вычисляет их в любом из двух видов.
- Ключи и секреты: 32-байтовый ключ, который выдаёт
openssl rand -hex 32, превращается в 44-символьное значение Base64, которого ждут многие конфиги.
Для SHA-256 от собственного текста или файла SHA-256 в Base64 обходится вообще без шага с hex.
Типичная ошибка: кодировать hex как текст
echo -n 2cf24d…9824 | base64 выглядит правильно, но это не так. Команда кодирует 64 ASCII-символа hex-записи, а не 32 байта, которые за ними стоят, и выдаёт 88 символов, начиная с MmNmMjRk. Это значение декодируется обратно в hex-текст, так что никто не выдаёт ошибку, пока не провалится проверка подписи или целостности. Сначала декодируйте hex:
echo -n 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | xxd -r -p | base64
# LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
printf hello | openssl dgst -sha256 -binary | base64
# same result, without going through hex at all
xxd -r -p превращает обычный hex обратно в байты. Утилита идёт в комплекте с Vim; в минимальных системах установите пакет xxd. В OpenSSL именно -binary заставляет выдать дайджест байтами, а не в hex.
Hex в Base64 в коде
import base64
base64.b64encode(bytes.fromhex("5d41402abc4b2a76b9719d911017c592")).decode()
# 'XUFAKrxLKna5cZ2REBfFkg=='
Buffer.from("5d41402abc4b2a76b9719d911017c592", "hex").toString("base64");
// 'XUFAKrxLKna5cZ2REBfFkg=='
Варианты URL-safe и без дополнения разобраны на страницах про Python и Node.js. Если дайджест пойдёт в URL или JWT, переведите результат через Base64 в Base64URL.
Если конвертация не удалась
- «нечётное число hex-цифр». На каждый байт нужно две цифры, а одна потерялась при копировании. Проверьте начало и конец ввода.
- «неожиданный символ». Во вводе есть что-то, кроме hex, например метка
sha256:или имя файла, котороеsha256sumпечатает после дайджеста. Удалите это; кнопка Показать перенесёт к нужному месту. - Смещения из hex-дампа. В строке
00000010: 4865 6c6cзначение00000010обозначает позицию, а не данные, но это корректный hex, и конвертер его тоже обработает. Используйте выводxxd -p, в котором смещений нет.
Вопросы и ответы
Как перевести хеш SHA-256 из hex в Base64?
Вставьте 64 hex-цифры в поле ввода. Получится 44 символа с = в конце: например, 2cf24dba…9824 превращается в LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=. В командной строке: echo -n HEX | xxd -r -p | base64.
Почему мой Base64 вдвое длиннее, чем должен быть?
Hex-строку закодировали как текст, и каждая hex-цифра стала отдельным байтом. Дайджест SHA-256 в таком случае даёт 88 символов вместо 44. Сначала декодируйте hex в байты: именно так работает этот конвертер.
Сколько символов Base64 получается из hex-строки?
Две hex-цифры дают один байт, а каждые 3 байта превращаются в 4 символа Base64 с округлением вверх до кратного 4. 32 hex-цифры (MD5) дают 24 символа, 40 (SHA-1) – 28, 64 (SHA-256) – 44, а 128 (SHA-512) – 88.
Можно ли перевести UUID в Base64?
Да, вставляйте его прямо с дефисами. 16 байт 123e4567-e89b-12d3-a456-426614174000 превращаются в Ej5FZ+ibEtOkVkJmFBdAAA==: 24 символа вместо 36.