Кодировщик и декодировщик Base85

Base85 упаковывает четыре байта в пять символов ASCII — плотнее, чем соотношение «3 к 4» у Base64, — используя алфавит из 85 символов вместо 64. Вариант Adobe Ascii85 встроен в каждый файл PostScript и PDF; более новый вариант Z85 (ZeroMQ) избегает символов, которые ломаются внутри строк языка C и XML. Этот инструмент кодирует и декодирует оба варианта, с разделителями по выбору.

Как преобразовать Base85

  1. 1

    Выберите вариант

    Ascii85 для ресурсов PDF/PostScript; Z85 для исходного кода и сетевых протоколов.

  2. 2

    Вставьте текст или загрузите файл

    При кодировании на вход идут необработанные байты; при декодировании — строка Base85.

  3. 3

    Кодировщик разбивает по 4 байта

    Каждый блок из 4 байтов превращается в строку Base85 из 5 символов. Последний блок дополняется, а лишние символы в конце отбрасываются.

  4. 4

    Скопируйте результат

    Ascii85 при желании оборачивается разделителями `<~` и `~>`; Z85 — без разделителей.

Сравнение прироста размера

Кодирование Символов на 4 байта Прирост к двоичному
Hex 8 +100%
Base64 5.33 (с дополнением округляется до 8) +37%
Base85 5 +25%
Сырые двоичные 4 0

Так 1 MB двоичных данных превращается в 1.25 MB в Base85, 1.33 MB в Base64 и 2 MB в hex.

Алфавиты Ascii85 и Z85

Ascii85 (RFC 1924 / Adobe): символы от ! до u (33–117 в ASCII), плюс z как сокращение для 4 нулевых байтов. Используется в потоках PostScript и PDF, оборачивается как <~...~>.

Z85 (ZeroMQ): подмножество, в котором нет кавычек и символов, требующих экранирования.

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#

Его можно безопасно вставлять в JSON, XML, строки языка C и исходный код без экранирования.

Как работает вычисление

Каждые 4 байта читаются как 32-битное целое число N в формате big-endian. Пять выходных символов — это цифры числа N в системе счисления по основанию 85, начиная со старшего разряда. 85^5 = 4 437 053 125, что больше 2^32, поэтому 4 байта всегда умещаются в 5 символов.

Когда важен Ascii85

Откройте любой PDF в текстовом редакторе и найдите ASCII85Decode — Adobe применяет его как фильтр для встроенных изображений и шрифтов, которым нужно пройти через 7-битную передачу (старые системы в духе факса). Z85 широко используется в ключах аутентификации ZeroMQ CURVE.

Особые случаи

  • Блок из 4 нулевых байтов — Ascii85 кодирует его одним символом z вместо !!!!!.
  • Блок из 4 пробелов — некоторые варианты используют y для четырёх пробелов, другие нет.
  • Последний неполный блок — дополняется нулевыми байтами, а соответствующее число выходных символов отбрасывается в конце.

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

По размеру вывода — да, он меньше. По универсальной совместимости — нет. Base85 содержит символы вроде <, >, &, " (в Ascii85), которые приходится экранировать в XML, JSON и URL. Z85 этого избегает, но большинство инструментов изначально работают с Base64.

Ascii85, если вы работаете с файлами PostScript или PDF. Z85 — для исходного кода, файлов конфигурации и сетевых протоколов. Кодирование IPv6 по RFC 1924 — это другое назначение тех же 85 символов, и на практике оно применяется редко.

Нет. У них разные алфавиты. Если декодировать Ascii85 по таблице Z85, получится мусор. Выберите один вариант до кодирования и придерживайтесь его.

Для Adobe Ascii85 в потоках PDF или PostScript — да, они отмечают закодированную область. Для самостоятельного использования и любого вывода Z85 разделители не нужны.

Сопутствующие инструменты

Кодировщик шифра A1Z26

Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.

Шифрование / расшифровка AES

Шифруйте и расшифровывайте текст низкого риска с AES-шифрами OpenSSL. Парольная фраза хэшируется SHA-256, а Base64-вывод содержит IV плюс шифротекст.

Кодировщик шифра Атбаш

Кодируйте или декодируйте текст шифром Атбаш, еврейской заменой, где A-Z отображается в Z-A. Одна и та же операция шифрует и расшифровывает.

Кодировщик и декодировщик Base32

Кодируйте и декодируйте строки Base32 с алфавитом RFC 4648. Полезно для секретов TOTP, регистронезависимых токенов и идентификаторов, которые вводит человек.

Генератор bcrypt

Сгенерируйте bcrypt hash из plaintext password. Настраиваемый cost factor от 4 до 14, совместим с Laravel, Django, Node и PHP.

Генератор bcrypt-хешей

Генерируйте bcrypt-хеши или проверяйте пароль в открытом виде относительно существующего bcrypt-хеша. Генерация и проверка рядом в одном инструменте.