> qr-optimized | efficient | modern <
// Кодирование Base45, оптимизированное для QR‑кодов и цифровых сертификатов
Оптимизировано для QR‑кодов
Использует символы, поддерживаемые алфавитно‑цифровым режимом QR‑кода, чтобы максимизировать плотность данных и надёжность сканирования.
Соответствие RFC 9285
Реализует официальный стандарт Base45 (RFC 9285), применяемый в цифровых сертификатах ЕС, включая COVID‑сертификат.
Экономия места
Более эффективно, чем Base32, и зачастую удобнее Base64 для хранения данных непосредственно в QR‑коде.
>> техническая информация
Как работает Base45:
Base45 использует 45 символов, оптимизированных для алфавитно‑цифрового режима QR‑кода. Данные кодируются блоками по 2 байта в 3 символа Base45, что обеспечивает лучшее использование ёмкости QR‑кода по сравнению с Base64.
Пример:
"Hello" → %69 VD92EX0
Зачем использовать Base45:
- >Максимизировать объём полезных данных в одном QR‑коде
- >Соответствовать требованиям цифровых сертификатов (например, EU Digital COVID Certificate)
- >Сократить размер и сложность QR‑кода
- >Повысить вероятность успешного сканирования на мобильных устройствах и простых сканерах
- >Заменить Base64 там, где полезная нагрузка предназначена для кодирования в QR‑код
>> часто задаваемые вопросы
Что такое кодирование Base45?
Base45 — это схема кодирования, определённая в RFC 9285, которая использует 45 символов, специально подобранных для эффективной работы с алфавитно‑цифровым режимом QR‑кода.
Зачем был создан Base45?
Base45 был создан для эффективного размещения структурированных данных в QR‑кодах, в первую очередь для цифровых сертификатов здоровья, таких как COVID‑сертификаты ЕС.
Чем Base45 отличается от других методов кодирования?
В отличие от Base64, Base45 использует только символы, поддерживаемые QR‑кодом в алфавитно‑цифровом режиме, что даёт выигрыш по плотности хранения при одинаковом размере QR‑кода.
Когда стоит использовать Base45?
Base45 особенно полезен, когда нужно упаковать сертификаты, токены доступа или конфигурационные данные в маленький, легко считываемый QR‑код.
// Краткий справочник
| Ввод | Base45 |
|---|---|
| AB | BB8 |
| Hello!! | %69 VD92EX0 |
| base-45 | UJCLQE7W581 |
| ietf! | QED8WEX0 |
// Примеры кода
Alphabet 0-9 A-Z space $ % * + - . / : (45 characters) Length 2 bytes -> 3 chars, 1 byte -> 2 chars Python pip install base45 base45.b45encode(b"AB") # b'BB8' Node.js npm i base45-js // RFC 9285 EU DCC JSON -> CBOR -> COSE -> zlib -> Base45 -> "HC1:" -> QR
>> Другие вопросы
В: Какие 45 символов использует Base45?
О: Ровно те, что есть в буквенно-цифровом режиме QR: 0–9, A–Z (только заглавные), пробел и $ % * + - . / :. Алфавит задан в RFC 9285.
В: Какой длины получается строка Base45 относительно исходных байтов?
О: Каждые 2 входных байта дают 3 символа, одиночный остаточный байт — 2 символа. Для n байт получается 3·⌊n/2⌋ + 2·(n mod 2) символов, около 150 % от исходной длины.
В: Почему Base45 лучше Base64 для QR-кодов?
О: Буквенно-цифровой режим QR тратит около 5,5 бита на символ, байтовый режим (нужен для + и / в Base64) — 8 бит. Поэтому в тот же код помещается больше данных. Сертификаты COVID в ЕС: CBOR → COSE → zlib → Base45 → префикс HC1: → QR.