Кодувальник/Декодувальник Base64 - Безкоштовний онлайн інструмент перетворення Base64
Безкоштовний інструмент кодування та декодування base64. Миттєво перетворюйте текст у Base64 або декодуйте Base64 рядки. Підтримує стандартне та URL-безпечне кодування. Реєстрація не потрібна.
Кодувальник/Декодувальник Base64
Перетворення тексту в Base64 та назад
Документація
Що таке кодування Base64?
Base64 — це спосіб перетворення будь-яких даних, зокрема двійкових даних, наприклад зображень, на звичайний текст, що містить лише літери, цифри та кілька символів. Кодер Base64 перетворює дані на такий текстовий формат. Декодер Base64 повертає їх до початкових даних. Програми використовують Base64, щоб безпечно передавати двійкові дані через системи, як-от електронну пошту або JSON, які очікують звичайний текст.
Base64 використовує алфавіт із 64 символів:
- Великі літери A–Z (26 символів)
- Малі літери a–z (26 символів)
- Цифри 0–9 (10 символів)
- Два символи, зазвичай
+і/(2 символи)
Деякі системи також використовують знак рівності = наприкінці результату як доповнення. Доповнення не є частиною алфавіту з 64 символів; воно лише заповнює довжину.
Навіщо потрібен Base64
Багато старих текстових протоколів, зокрема електронна пошта (SMTP) і деякі частини HTTP, були створені для передавання 7-бітового тексту ASCII. Вони можуть пошкоджувати необроблені двійкові байти, наприклад байти всередині зображення JPEG. Base64 усуває цю проблему, подаючи кожен байт лише безпечними друкованими символами. Тому вкладення електронної пошти, зображення, вбудовані у вебсторінки, і двійкові поля всередині JSON часто спочатку передаються через Base64.
Base64 не є стисненням і не є шифруванням. Закодований результат завжди більший за вхідні дані, а декодувати його можна без пароля чи ключа.
Як користуватися цим інструментом
- Введіть або вставте текст у поле введення.
- Виберіть «Кодувати в Base64», щоб перетворити текст на Base64, або «Декодувати з Base64», щоб перетворити рядок Base64 назад на текст.
- Увімкніть перетворення в реальному часі, щоб результат автоматично оновлювався під час введення.
- Скопіюйте результат кнопкою копіювання.
Інструмент читає та записує стандартний текст Unicode, тому літери з діакритичними знаками, символи й емодзі кодуються та декодуються правильно, а не лише звичайні англійські літери.
Як працює кодування Base64
Base64 перетворює кожні 3 байти вхідних даних (24 біти) на 4 вихідні символи (кожен містить 6 бітів), оскільки ділення 24 на 6 дає 4.
- Візьміть вхідні байти та запишіть їх у двійковому вигляді.
- Згрупуйте біти в блоки по 24 бітів (3 байти).
- Розділіть кожен блок розміром 24 бітів на чотири частини по 6 бітів.
- Знайдіть кожне 6-бітове число (від 0 до 63) в алфавіті Base64 і запишіть відповідний символ.
Якщо довжина вхідних даних не кратна 3, останній блок буде неповним. Кодувальник доповнює його нульовими бітами, а потім додає до результату символи =, щоб результат і далі складався з груп по 4:
- Один залишковий байт утворює 2 символи Base64 і
==. - Два залишкові байти утворюють 3 символи Base64 і один
=.
Приклад кодування Base64
Кодування слова «Hello»:
- Значення ASCII: 72, 101, 108, 108, 111
- Двійковий вигляд:
01001000 01100101 01101100 01101100 01101111 - Перші 3 байти (24 бітів) розділяються на чотири групи по 6 бітів:
010010 000110 010101 101100, яким відповідають числа 18, 6, 21, 44 → символиS,G,V,s. - Залишкові 2 байти (16 бітів) розділяються на три групи по 6 бітів, причому в кінці додаються 2 нульові біти:
011011 000110 111100, яким відповідають числа 27, 6, 60 → символиb,G,8. - Оскільки залишилися 2 байти, наприкінці додається один
=. - Результат:
SGVsbG8=
Декодування виконує ці кроки у зворотному порядку: кожен символ перетворюється на відповідне 6-бітове число, біти об’єднуються в потік, а потім цей потік зчитується як байти по 8 бітів.
Формула довжини закодованого рядка Base64
Для вхідних даних обсягом n байтів довжина закодованого рядка в символах становить:
encoded_length = 4 × ⌈n / 3⌉
де ⌈x⌉ означає округлення в більший бік до найближчого цілого числа. Ця формула показує, чому результат Base64 завжди приблизно на третину більший за вхідні дані: 4 вихідні символи на кожні 3 вхідні байти означають збільшення на 33%.
Де використовується Base64
- Вкладення електронної пошти (MIME). Електронну пошту створювали для тексту, тому вкладені файли перед надсиланням перетворюються на Base64, через що файл стає приблизно на 33% більшим за оригінал.
- URI даних. Невеликі зображення можна вбудовувати безпосередньо в HTML або CSS як текст, наприклад
data:image/png;base64,iVBORw0KGgo..., не надсилаючи окремий запит до файлу. Це найкраще працює для невеликих файлів, оскільки великі файли збільшують розмір сторінки й не можуть кешуватися окремо. - API та JSON. JSON не має вбудованого способу зберігати необроблені двійкові дані, тому двійкові файли, які передаються через JSON API, часто спочатку кодують у Base64.
- Базова автентифікація HTTP. Заголовок
Authorizationкодує ім’я користувача та пароль у Base64, наприкладAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Сам по собі цей спосіб не є безпечним: облікові дані може прочитати будь-хто, хто їх перехопить, тому базову автентифікацію слід використовувати лише через HTTPS. - JSON Web Tokens (JWT). Кожна з трьох частин JWT кодується за допомогою Base64URL — варіанта, безпечного для розміщення всередині URL.
- Зберігання двійкових даних як тексту. Бази даних або конфігураційні файли, які приймають лише текст, іноді зберігають двійкові дані як рядок Base64.
Base64 у порівнянні з іншими способами кодування
Base64, безпечний для URL, замінює стандартні символи + і / на - і _, оскільки + і / мають спеціальне значення в URL. Його використовують для JWT, параметрів запиту URL і назв файлів. Цей інструмент створює стандартний результат Base64; для перетворення на варіант, безпечний для URL, достатньо замінити ці два символи.
Base32 використовує алфавіт із 32 символів, тому кожен символ містить 5 бітів замість 6. Він перетворює кожні 5 байтів на 8 символів, із надлишковістю 60% (8 ÷ 5 = 1,6), порівняно з 33% для Base64. Base32 обирають, коли результат потрібно вводити вручну або читати телефоном, оскільки він не використовує літери різного регістру та символи, які легко сплутати.
Шістнадцяткова система числення має 16 символів (0–9, A–F) і потребує 2 символів на байт, подвоюючи розмір (надлишковість 100%). Її часто використовують для відображення хешів, кольорів і MAC-адрес, коли зручність читання важливіша за компактність.
Коли не слід використовувати Base64
Base64 збільшує обсяг даних і витрати процесора, тому погано підходить для великих файлів, які передаються мережею; безпосереднє надсилання необроблених двійкових даних буде меншим і швидшим. Не слід покладатися на Base64 для приховування конфіденційної інформації, як-от паролів або ключів API, оскільки для декодування не потрібен секрет. Для зберігання великих файлів зазвичай краще використовувати двійковий тип стовпця бази даних або службу зберігання файлів, а не довгий закодований рядок у текстовому полі.
Поширені помилки
- Пропуск перетворення UTF-8. Кодування тексту з літерами з діакритичними знаками або емодзі без попереднього перетворення на байти UTF-8 може пошкодити результат.
- Видалення доповнення. Деякі системи видаляють кінцеві символи
=. Більшість декодерів усе ще працює, якщо доповнити рядок до довжини, кратної 4, але не всі вони це приймають, тому безпечніше зберігати доповнення. - Залишкові переноси рядків. Старі кодувальники на основі MIME вставляють перенос рядка кожні 76 символів; більшість сучасних декодерів очікує один безперервний рядок без них.
- Плутанина між варіантами. Стандартний Base64 і Base64, безпечний для URL, використовують різні символи на тих самих двох позиціях алфавіту; декодування неправильним варіантом дає неправильні дані або помилку.
Поширені запитання
Чи є Base64 різновидом шифрування? Ні. Це оборотне кодування тексту, а не шифрування. Будь-хто може миттєво декодувати рядок Base64 без пароля. Якщо дані мають залишатися таємними, використовуйте алгоритм шифрування, наприклад AES.
Чому Base64 збільшує обсяг даних? Тому що один повний символ містить лише 6 бітів, тоді як необроблений байт містить 8 бітів. Перетворення 3 байтів (24 бітів) на 4 символи означає, що результат має розмір 4/3, тобто приблизно на 33% більший за вхідні дані.
Чи може Base64 кодувати зображення та інші двійкові файли? Так. Будь-який двійковий файл, зокрема зображення, PDF і аудіо, можна закодувати в Base64, а потім декодувати назад байт у байт. Цей спосіб часто використовують для невеликих зображень, вбудованих у HTML або CSS, але для великих файлів він є невдалим вибором.
У чому різниця між Base64 і Base64URL?
Base64URL замінює стандартні символи + і / на - і _, тому результат можна безпечно розміщувати в URL або назві файлу без додаткового екранування. JWT використовують Base64URL саме з цієї причини.
Чому під час декодування мій рядок Base64 спричиняє помилку «недійсний»?
Найпоширеніші причини — символи, які не належать до алфавіту Base64, наприклад - і _, що використовуються у варіанті, безпечному для URL, або рядок, довжина якого на одиницю більша за число, кратне 4. Жоден дійсний рядок Base64 не має такої довжини. Декодування також не вдається, коли декодовані байти не є дійсним текстом UTF-8. Цей інструмент ігнорує пробіли та переноси рядків усередині рядка, а також декодує рядок, з якого було видалено кінцеве доповнення =.
Звідки походить Base64? Ця технологія бере початок із ранніх способів передавання двійкових даних через поштові системи, що працювали лише з текстом, у 1980-х роках. Її було офіційно стандартизовано як частину MIME у RFC 2045 у 1996 році. Чинна довідкова специфікація для Base64, Base32 і Base16 — це RFC 4648.