Как пользоваться
- Выберите «Кодировать», чтобы перевести текст в z-base-32, или «Декодировать», чтобы получить текст из z-base-32.
- Оставьте выбранным вариант «z-base-32» и убедитесь, что «Дополнение» отключено: этот формат его не использует.
- Введите или вставьте входные данные либо откройте файл. Результат обновляется по мере ввода.
- Скопируйте результат или скачайте его в виде файла.
Что такое z-base-32?
z-base-32 — это кодировка Base32, которую Zooko Wilcox-O'Hearn разработал так, чтобы людям было проще её читать, записывать и произносить. Принцип работы тот же, что и у Base32 по RFC 4648: каждый символ несёт 5 бит, а 5 байтов превращаются в 8 символов. Отличается она алфавитом:
ybndrfg8ejkmcpqxot1uwisza345h769
Он целиком состоит из строчных символов и не содержит 0, 2, l и v, которые легко спутать с o, z, 1 и u. Кроме того, символы переставлены, поэтому результат z-base-32 совсем не похож на стандартный Base32 тех же байтов и не читается декодером RFC 4648.
Дополнения нет: длина данных определяется длиной строки. Спецификация позволяет также кодировать битовые строки, не состоящие из целых байтов, если обе стороны заранее договорились о длине; этот инструмент всегда работает с целыми байтами.
Где используется z-base-32
- OpenPGP Web Key Directory (WKD). Чтобы опубликовать ключ по стандартному адресу (well-known URL), локальную часть адреса электронной почты переводят в нижний регистр и хешируют с помощью SHA-1, а 20-байтовый хеш кодируют в z-base-32 и получают 32-символьное имя файла.
- ZRTP. Короткую строку аутентификации, которую два собеседника зачитывают вслух, чтобы обнаружить атаку «человек посередине», можно представить в Base32 с алфавитом z-base-32 (RFC 6189).
- Lightning Network. Программное обеспечение узлов, например lnd и Core Lightning, возвращает подписанные сообщения в виде строк z-base-32.
Среди других удобных для людей форматов сравните Crockford Base32, в котором цифры идут по порядку, а опечатки прощаются, и Base58, который короче, но учитывает регистр.
Спецификация
| Алфавит | ybndrfg8ejkmcpqxot1uwisza345h769 |
|---|---|
| Размер результата | 8 символов на каждые 5 байт (160%) |
| Дополнение | Нет |
| Стандарт | z-base-32 (Zooko Wilcox-O'Hearn) |
| Учёт регистра | Нет |
Примеры
| Исходные данные (UTF-8) | Результат |
|---|---|
Hello, World! | jb1sa5dxfoofq551pt1nn |
Base64.is | ejozg3jsgozg1ha |
你好 | h164b3pfzw |
Часто задаваемые вопросы
z-base-32 — это то же самое, что Base32?
Нет. В нём используется та же группировка по 5 бит, что и в Base32 по RFC 4648, но другой, переставленный алфавит и нет дополнения. Строку z-base-32 нужно декодировать декодером z-base-32.
Учитывает ли z-base-32 регистр?
Алфавит состоит из строчных символов, и результат всегда выводится в нижнем регистре. Этот декодер принимает и заглавные буквы и перед декодированием переводит их в нижний регистр.
Что, если моя строка заканчивается знаками =?
z-base-32 не использует дополнение, но если строка заканчивается знаками =, декодер просто их игнорирует.
Как получить хеш WKD?
--with-wkd-hash.