Кодировщик и декодер z-base-32

Преобразуйте текст, шестнадцатеричные байты или файлы в z-base-32 и обратно. В его алфавите из строчных букв нет легко путаемых символов, а результату не нужно дополнение.

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Выберите «Кодировать», чтобы перевести текст в z-base-32, или «Декодировать», чтобы получить текст из z-base-32.
  2. Оставьте выбранным вариант «z-base-32» и убедитесь, что «Дополнение» отключено: этот формат его не использует.
  3. Введите или вставьте входные данные либо откройте файл. Результат обновляется по мере ввода.
  4. Скопируйте результат или скачайте его в виде файла.

Что такое 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.isejozg3jsgozg1ha
你好h164b3pfzw

Часто задаваемые вопросы

z-base-32 — это то же самое, что Base32?

Нет. В нём используется та же группировка по 5 бит, что и в Base32 по RFC 4648, но другой, переставленный алфавит и нет дополнения. Строку z-base-32 нужно декодировать декодером z-base-32.

Учитывает ли z-base-32 регистр?

Алфавит состоит из строчных символов, и результат всегда выводится в нижнем регистре. Этот декодер принимает и заглавные буквы и перед декодированием переводит их в нижний регистр.

Что, если моя строка заканчивается знаками =?

z-base-32 не использует дополнение, но если строка заканчивается знаками =, декодер просто их игнорирует.

Как получить хеш WKD?
Для WKD нужен хеш SHA-1 локальной части адреса в нижнем регистре, а этот инструмент его не вычисляет. Вычислите хеш другим способом, вставьте его сюда как шестнадцатеричные входные данные и закодируйте. GnuPG также может сразу вывести хеш WKD с помощью параметра --with-wkd-hash.