Utilia

Base64: кодер і декодер

Безкоштовний кодер і декодер Base64 з повною підтримкою UTF-8 та варіантом base64url для URL. Працює у вашому браузері, нічого не завантажується на сервер.

Як користуватися кодером і декодером Base64

  1. Виберіть, що потрібно зробити: закодувати текст у Base64 чи декодувати Base64 назад у текст.
  2. Введіть або вставте дані в текстове поле. Літери з діакритикою, кирилиця, інші писемності та емодзі підтримуються повністю.
  3. Якщо результат потрібен для URL-адреси, імені файлу або токена JWT, увімкніть опцію Безпечний для URL (base64url), щоб отримати варіант base64url.
  4. Прочитайте результат і скопіюйте його. Якщо ви декодуєте, а вхідні дані не є коректним Base64, інструмент покаже повідомлення про помилку замість нечитабельного набору символів.

Що таке Base64

Base64 – це спосіб подати довільні байти лише за допомогою 64 друкованих символів ASCII: великих літер A–Z, малих літер a–z, цифр 0–9 та двох символів + і /. Символ = використовується як доповнення в кінці. Цей формат існує тому, що багато систем створювали для передавання тексту, а не «сирих» двійкових даних. Тіла електронних листів, заголовки HTTP, документи XML і JSON, а також data-URL очікують символів, які можна скопіювати, записати в журнал і передати без змін.

Алгоритм бере групи по три байти (24 біти) і ділить їх на чотири 6-бітові значення, кожне з яких відповідає одному з 64 символів. Тому результат у Base64 завжди приблизно на 33% більший за вхідні дані: кожні 3 байти перетворюються на 4 символи. Якщо довжина вхідних даних не кратна трьом, додається один або два знаки =, щоб довжина результату була кратна чотирьом. Наприклад, слово Hi кодується як SGk=, а Hello – як SGVsbG8=.

Текст, байти й UTF-8

Base64 кодує байти, а не символи, тому текст спершу потрібно перетворити на байти. Цей інструмент використовує UTF-8 – кодування майже всіх сучасних вебсторінок і API. Тому café перетворюється на Y2Fmw6k=, а емодзі на кшталт 👍 (чотири байти в UTF-8) кодується правильно й декодується назад у той самий емодзі. Багато швидких скриптів, які спираються на старішу функцію браузера btoa(), не працюють з усім, що виходить за межі Latin-1; цей інструмент такого обмеження не має.

Стандартний Base64 і base64url

Стандартний Base64 використовує + і /, які мають особливе значення в URL-адресах і шляхах до файлів. Безпечний для URL варіант, base64url, замінює + на -, а / на _ і зазвичай відкидає доповнення =. Саме цей формат застосовують у JSON Web Token (JWT), у багатьох параметрах OAuth і в сервісах скорочення посилань. Вмикайте опцію Безпечний для URL (base64url), коли потрібен цей формат, і залишайте її вимкненою для вкладень електронної пошти, data-URL або файлів конфігурації, які очікують стандартний Base64.

Base64 – це не шифрування

Це найпоширеніша помилка. Base64 – це кодування: у ньому немає ні ключа, ні секрету, і будь-хто може миттєво відновити початкові дані. Закодувавши пароль, ключ API чи персональні дані в Base64, ви жодним чином їх не захистите. Наприклад, базова автентифікація HTTP передає ім’я:пароль саме в Base64, тому її можна використовувати лише через HTTPS. Якщо потрібна конфіденційність, застосовуйте справжнє шифрування (наприклад, AES) або хешування паролів (наприклад, Argon2 чи bcrypt), а не Base64.

Конфіденційність

Усе кодування й декодування відбувається локально у вашому браузері за допомогою JavaScript. Текст, який ви вводите, ніколи не надсилається на сервер, не зберігається і не записується в журнал, тому ви можете спокійно переглядати токени чи значення конфігурації. Інструмент працює лише з текстом; завантаження файлів він не підтримує.

Поширені запитання

Чому декодований текст схожий на випадкові символи?

Імовірно, рядок Base64 містить двійкові дані, як-от зображення, стиснутий файл або зашифрований вміст, а не текст. Декодування дає коректні байти, але вони не є осмисленим текстом UTF-8. Таке трапляється й тоді, коли початковий текст закодовано в іншій кодовій таблиці, а не в UTF-8.

Чому інструмент каже, що мій Base64 некоректний?

Коректний Base64 містить лише 64 дозволені символи та необов’язкове доповнення =, а його довжина має відповідати групуванню по 4 символи. Типові причини: випадково скопійовані зайві символи, обрізаний рядок або рядок base64url (із - та _), який декодують без увімкненої опції безпечного для URL режиму.

Чи можна закодувати зображення або інші файли?

Ні. Інструмент призначений лише для тексту. Щоб вбудувати зображення в HTML чи CSS, потрібен інструмент, який зчитує «сирі» байти файлу й створює data-URL.

Чи безпечно зберігати паролі в Base64?

Ні. Base64 може декодувати будь-хто за долю секунди. Паролі слід зберігати за допомогою спеціального повільного алгоритму хешування, як-от Argon2, scrypt або bcrypt.

Чим відрізняється Base64 із доповненням і без нього?

Доповнення = лише робить довжину результату кратною чотирьом і не несе жодної інформації. Більшість декодерів можуть відновити дані й без нього. У base64url доповнення зазвичай пропускають, бо = сам по собі є зарезервованим символом в URL.