У цій статті
Що таке Base64?
Base64 — це схема кодування, яка конвертує бінарні дані на рядок символів ASCII. Вона використовує 64 безпечних символи (A-Z, a-z, 0-9, +, /) для представлення будь-яких бінарних даних, що робить їх безпечними для передачі через текстові протоколи, як-от заголовки HTTP, електронна пошта (MIME) та JSON.
Base64 — це не шифрування, а кодування. Будь-хто може декодувати Base64 назад до оригінальних даних без будь-якого ключа. Мета Base64 — дозволити бінарним даним проходити через системи, розраховані на текст, а не забезпечувати безпеку.
Як працює кодування Base64
Base64 конвертує кожну групу з 3 байт (24 біти) у 4 символи Base64 (по 6 бітів кожен), доповнюючи символами = якщо вхідні дані не кратні 3.
- Групування байт — вхідні байти групуються по 3 та конвертуються у 4 вихідних символи
- Відображення символів — кожна 6-бітна група відповідає одному з 64 друкованих символів ASCII
- Доповнення — символи = додаються, щоб забезпечити кратність довжини виводу 4
Спробуйте безкоштовно — реєстрація не потрібна
Закодувати або декодувати Base64 →Коли використовувати Base64
Base64 використовується завжди, коли бінарні дані потрібно вбудувати у текстові формати.
- Вкладення електронної пошти — MIME-кодування використовує Base64 для прикріплення бінарних файлів до листів
- Data URI — вбудовуйте зображення безпосередньо в HTML/CSS як data:image/png;base64,... щоб уникнути HTTP-запитів
- Автентифікація API — облікові дані Basic Auth кодуються у Base64 в заголовку Authorization HTTP
Часті запитання
Чи збільшує Base64 розмір даних?
Так. Кодування Base64 збільшує розмір приблизно на 33%, оскільки кожні 3 байти вхідних даних перетворюються на 4 байти виводу. Це невід'ємний компроміс між безпекою передачі бінарних даних у текстовому середовищі та ефективністю.
У чому різниця між стандартним Base64 та URL-безпечним Base64?
Стандартний Base64 використовує символи + і /, які мають особливе значення в URL. URL-безпечний Base64 (Base64url) замінює + на - і / на _, щоб отримати рядки, придатні для використання в URL та іменах файлів без відсоткового кодування. JWT використовує кодування Base64url.
Як обробляти Base64 з даними, що не є UTF-8?
Base64 працює з сирими байтами, а не з текстом. При кодуванні бінарних даних, наприклад зображень або зашифрованого вмісту, слід розглядати їх як масив байт, а не як рядок. У JavaScript використовуйте Uint8Array або Buffer; у Python — об'єкти bytes, щоб уникнути проблем із кодуванням для даних, що не є UTF-8.