Українська

Розробники · Base64 енкодер & decoder

Base64 проти шестигранної бази32: порівняння трьох способів написання байтів як текст

· Підземелля

Опубліковано ToolAcre · Редакція журналу

бази64 коди

Порівняння бази64, шестигранної та бази32 щільності та читабельності для того ж 16 bytes
Головна ToolAcre векторна ілюстрація

Hex, base32 і Base64 вирішують однакову проблему з різними торгово-оффами за розмірами, доступністю та безпекою. Цей пост порівнює їх з щільністю, чутливістю корпусу, URL Безпека та людська помилка.

Про нас API ключ, який був помилковий через л, 1, I та O — нездатність бетонної читабельності, яка не мала

Трьох поширених способів представлення байтів як текст є шестигранними, базовими32 і base64. Всі вони вирішують однакову проблему (випробування довільних байтів у друкованій платі ASCII) але з різними торгово-оффами в розмірах, читабельності та похибки. Хекс 2 символи за байт (F3 A2 B1 ...), так 16 bytes Почати 32 символи. Бази32 1.6 символи на байт (приблизно 5 символи за 3 bytesй 16 bytes Почати 26 символи.

Бази64 1.33 символи за байтом (exactly) 4 символи за 3 bytesй 16 bytes Почати 24 символи або менше. Якщо значення розмірів файлів, base64 є найбільш компактним. Якщо люди транскрипції, токс і бази32 безпечніше. Відмінність читабельності є критичною, коли значення типовано, скопіювати або спіювати. Hex використовує 0-9 і в більшості контекстів. Транскрипція каналу змінює рішення, оскільки оптимізоване представлення машин для людей. Base64 – це випадковий і використовує два знаки пунктуації; він використовує менший візуальний словник. Випробувано в тому, що не придумується ймовірність.

Щільність: 2×, 1.6× і 1.33× — скільки символів кожен кодування потребує за допомогою

Base32 використовує A-Z і 2-7, уникаючи 0, 1, O і я, які легко плутають на папері. Base64 використовує A-Z, a-z, 0-9+ й /, в тому числі і верхній і нижній регістр, що робить його чутливими і змішаними цифрами, які виглядають аналогічно (0 versus О, 1 versus I versus нижня кришка L. Анжела API ключ в шістку може бути f3a2b1e4; такі ж байти в base64 можуть бути 86KrvE= (з наповнювачем), або в base32 6VEV7FI= (з наповнювачем).

Якщо користувач повинен ввести значення вручну, шестигранним або базовим32 є безпечніше, ніж base64. Зашифровані символи в URL-адреси. Hex і base32 є безпечним для URL-адрес; як використовувати тільки альфа-цифрові символи (hex також використовує 0-9, base32 також використовує 2-7). Base64 використовує плюс і slash які є URL-збережено (плюс являє собою простір у вигляді зашифрованих даних, зіткнення - це ступінчастий сепаратор). Бази64 щільність прямо з шести корисних біт на вихідний символ і насипання до чотирьох блоків. Hex несе чотири біти на символ, що робить два символи на байт. Бази32 обговорюється як контекст порівняння тільки тому, що цей репозиторій не дає абету, а не кодувальника для перевірки вихідних даних.

Щільність від ширини біта — точний базовий базовий і шестигранний арифметичний, з базою32 обробляється як контекст порівняння

A base64 рядок в a URL параметр повинен бути процентований (плюс стає %2B, slash стає %2F), додавання 4 додаткові символи для кожного виникнення. База64url (RFC 4648 секція 5) замінює плюс з висипом і сіткою з підкресленням, роблячи його URL-безпечний без відсотків-пригоди. Більшість API, які використовують base64 у URL-адресах, фактично використовують base64url, але відмінність часто не відображається в документації.

TOTP секрети (коди, які використовуються додатками автентифікації), зазвичай розподілені як base32. Р TOTP Екран зарахування показує базовий32 секрет, оскільки легше типувати і трафаретувати, ніж однакові байти в base64 або шестигранці. SHA хеш-перетрави часто відображаються в шестигранці, оскільки це традиційний формат і тому, що він є чутливим, що робить типорозмір менш ймовірним. Відчуття випадків, коли хтось читає значення aloud або змінює його, так як зміна його індексу. ToolAcre зберігає випадок точно і буде декодувати отримані різні байти, не знаючи, що людина зробив помилку транскрипції. Саме представництво не має дозволу.

Зашифровані символи та URL Безпека — де + і / біт, і як base32 і шестигранник уникнути проблеми

JWTs використовувати base64url. Перевірки файлів можуть бути шестигранними або базовими64; обидва поширені. Вибір історичної конвенції, не технічної потреби. Помилки – це тонка, але важлива відмінність. Base32 уникає цифр 0, 1, 8й 9 (які виглядають як листи), зменшення помилок транскрипції. Base64 містить всі цифри, роблячи 1 неоднозначна (це літера I, нижня кришка L, або дігіт 1?).

Хекс ще більше помилок: 0 Як виглядає O, L 1. Заява, яка повинна бути набражена або читати з друку, безпечніше в base32. Анжела API ключ, який видається безпосередньо з комп'ютера, є безпечним у будь-якому форматі; значення для читання тільки при залученні очей людини. Помістити те ж саме, але кодувати різні: 16-послідовність [0xf3, 0xa2, 0xb1, ...] стає f3a2b1... Standard Base64 плюс і slash потребують обробки каналів; URL-безпечний режим замінює їх гіфеном і підкресленням. Включає в себе ті сепаратори за допомогою цифр і літер. Бази32 конвенції різняться, тому ця стаття дозволяє уникнути перспективних властивостей безпеки, що репозиторій не реалізує або тестує.

Приклад роботи: те ж саме 16 bytes у всіх трьох кодуваннях — довжини у порівнянні з візуальною перевіркою

в шістдесятці 6VEV7FI=... в base32 і 86KrvE=== в base64. Ні з цих рядків взаємозамінні. Додаток, що отримує f3a2b1... очікує шістнадцяти і намагатиметься розпарювати його як шестигранний. Отримання 86KrvE== не вдасться, якщо додаток очікує шестигран. Формат кодування є частиною договору з даними: відправник і ресивер повинен погоджуватися на який використовується кодування. Підкладка є ще однією відмінністю.

Хекс не використовує наповнювачі4 bytes завжди 8 Символи шістнадцяти, не винятки. Base32 і base64 обидва використовують рівні накидки, щоб вирівняти вихід на кілька символів (8 для бази32, 4 для base64). Поглинання необхідно математично; забезпечує, що кожен вхід n-byte виробляє детермінований характер. Правила накладки різняться: деякі застосунки вимагають накипу, інші дозволяють його бути втілені. Порівняння робіт використовує фіксовану послідовність байтів і компutes Base64 і шестигранне механічно. Його довжина Base32 може бути обговорена з п'ятиbit, але точне значення базового тексту Base32 не буде опубліковано, тому що його не було показано. Довжина арифметичної і вихідної перевірки зберігаються відмінною.

Де кожен звичайний — хеш в шістках, TOTP секрети в base32, JWTs і даних: URIs в Base64

При заданні базової 32 або базової 64 значення без наповнювача, декодери можуть приймати або відхиляти її залежно від виконання. Криптографічні ключі та токени показують різницю кодування.

Анжела HMAC ключ 32 bytes, що стає 64 геї, 52 base32 символи (з наповнювачем), або 44 base64 символи (з наповнювачем). При розподілі ключа, кодування повинно бути задокументовано. Якщо документація говорить ключ 44 base64 символи, але ви отримуєте 52 символи, щось неправильно. Конвенція може керувати зчитувачами, але не доведена придатність. Випадкові трави зазвичай відображаються як шестигранний, в той час як JWT сегменти використовують Base64url. Право вибору все ще залежить від правил каналів, чи копіює значення, і чи вже зафіксував інший протокол.

Що це не кришка — base58, base85 і checksummed кодування

Короткий кодування base64 дозволяє злегка легше підходити токени в системи з обмеженнями символів (наприклад, QR-коди або URL). Вибір кодування для значення встановлюється будь-якою екосистемою. Web APIs часто використовують base64url. Криптографічна документація часто використовується шістнадц. Додаток Authenticator використовує base32. При побудові системи виберіть один кодування, документ його чітко і приклейте його.

Змішуючи кодування (просування base64 або base32) вводить настій. При відключенні першим кроком є визначення, яке кодування використовує значення; інструмент Base64 енкодер & decoder може допомогти, намагаючись декодувати його кількома способами і побачити, які ви виробляє чутливий вихід. Немає кодування універсально краще. Base64 є найбільш компактним для зберігання сировини. Hex є найбільш знайомим з криптографами і найбільш гуманним для невеликих послідовностей. Base58, Base85 і контрольні кодування роблять різні торгові марки і відсутні ToolAcre's Base64 панель. Їх абетки, правила та контрольні витрати повинні оцінювати з виділеними джерелами та реалізацією, а не екстраполюватися від тестової поведінки цього інструменту.

Takeaway: забрати кодування для каналу та зчитувача — як Base64 encoder & decoder охоплює корпус Base64 в браузері, поряд з зчитувачем SHA Калькулятор хешу в одному продукті

Base32 є найбільш стійким до помилок транскрипції. Вибір залежить від контексту: де живе значення, як це спільного, і які системи споживають його.

Розуміння торгово-офонів дозволяє вибрати мудро при проектуванні API або система. Інструмент Base64 енкодер & decoder демонструє кодування base64; використовуючи його поряд з шестигранним або базовим32 інструментом дозволяє бачити однакові байти у всіх трьох форматах і зрозуміти їх розмір і відмінності прочитаності. Для справи Base64 закодуйте зразок, замітивши точний UTF-8-перевірити і виводити кількість символів, і перевірити стандарт versus URL-безпечна пунктуація. Для травлення роботи використовуйте окрему SHA панель. Зберігаючи ті операції, відмінні запобігає вибору кодування, від помилкових для захисту від хешування або цілісності.