Розробники · Base64 енкодер & decoder
Чому електронні вкладення є Base64: MIME, 7- транспортні та 76- сталеві лінії
· Підземелля
Опубліковано ToolAcre · Редакція журналу
бази64 коди

Побудований для електронної пошти 7-розсилка ASCII текст, і вкладення повинні бути розміщені через нього. Цей пост слідує як MIME прийняти Base64, чому лінії загортаються на 76 Символи і що означає розмір і відключення.
Прикріплення, що прибули пошкоджені через старе реле — 8-проблема MIME придумав, що рішення
Поповненням Електронного листа було розроблено у 1970-х роках та 1980-х роках для 7-розсилка ASCII текст тільки. SMTP, протокол, який несе електронну пошту, очікується, що кожен рядок буде на більшості 998 символи 7-розсилка ASCII (харчові) 0-127... Відправлення бінарного файлу, як PDF або зображення безпосередньо через SMTP не вдалося: байти 128-255 буде пошкоджено або відхилено застарілими поштовими серверами та реле. Пристосування потрібно кодування. MIME (Мультиціальні розширення інтернет-пошти, RFC 2045) вирішивши це шляхом визначення значень заголовка Content-Transfer-Encoding, включаючи base64, яка представляє будь-яку послідовністьбайтів, як 7-розсилка ASCII текст.
MIME пропонує кілька варіантів вибору контенту-перетворювача: 7bit (без кодування, тільки для безпечного ASCII), 8bit (для серверів, які підтримуються 8-розміщені байти, не універсальні, цитовані (коди тільки небезпечні байти, зберігаючи ASCII читання, та base64 (зашифрує все, максимізуючу сумісність). Баз64 був обраний для бінарних вкладеннях, оскільки це простий, стандартизований і гарантує безпеку на будь-якій поштовій системі, незалежно від того, як старий або строго 7-розсилка. Розмір торгів: Base64 - це приблизно третина більше, ніж оригінальні байти.
Транспортна проблема Base64 вирішує — Представництво довільних байтів з друкованими героями
А.А 3 KB PDF стає грубо 4 KB в базовому тексті Base64. Мистецтво 76-зміна рядка символів RFC 2045.
SMTP дозволяє лінії до 998 символи, але старі поштові системи і деякі спам-фільтри відхиляють довгі лінії. RFC 2045 specifies, що specifies, що MIME Бази64 лінії не повинні перевищувати 76 символи (плюсувати) CRLF закінчення лінії, тому поштовий сервер ніколи не розбиває транспорт. Обмеження не чарівний; це історичний компроміс між читабельністю (76 символи вписуються в більшості терміналів 1980-х, сумісність з застарілими системами, і уникаючи виявлення як спам або вірусні візерунки.
Вихідні варіанти, видимі в цьому інструменті — канонічне начиння та додаткові 76-запаювання вугілля
Сучасні системи пошти зазвичай підтримують більш тривалі лінії, але кодування 76-забезпечує вкладення навіть найстарішого ресивера. Після RFC 2045 визначено MIME Бази64, RFC 4288 (медіа) та RFC 2183 (Контент-Distion) додано стандартизовані способи накладення етикеток. Повідомлення з повідомленням PDF вкладка включає в себе Контент-Трансфер-Водяг: base64 заголовок, зміст-Type: додаток/pdf головки, і PDF байти, закодовані як Base64 з 76-чарівні лінії. Для видалення лінійних розривів (зняттям лінійних розривів)CRLF символи) і потім декодування Base64 для відновлення оригінальних байтів.
Випадкування MIME Базова64 вкладка вимагає ігнорування білого простору. Мистецтво RFC коментує: декодери повинні пропустити розриви рядків (CR і LF символів) під час декодування. Саме тому, що Base64 декодер, який приймає біле приміщення, є практичним; найбільш реальним MIME в поштовій скриньці буде проходити лінійні канікули. Деякі декодери є суворими і відхиляють білим простором (підходить для контекстів, таких як: JWT, де лінії розбиття не повинні бути присутніми, а інші - lenient і skip whitespace (для підходу для MIME).
Мистецтво 76-вихідник варіанту в практиці — як вставки енкодера і декодера ігнорує розриви рядків
Інструмент для закріплення та декодер Base64 може оброблятися як: він приймає багатолінійне задане вкладення та ігнорує розриви рядків під час декодування. Прогнозовано вплив розміру. RFC 2045 base64 обгортання додає один CRLF (2 bytes) за 76 символи вихідного. Для 10 KB файл, Base64 є грубо 13.3 KB, плюс CRLF що 76 символи: 13.5 KB всього. Накладний шорстко третина більше байтів.
Обмеження розмірів електронної пошти зазвичай заявляються на закодований розмір, не оригінальний розмір файлу; поштовий сервер з 25 MB лімітні засоби 25 MB не закодовано повідомлення 25 MB навіски. Розрахунок початкового розміру файлу вимагає поділу 1.33 (або точно, по 4 поділитися 3... Кодування цінних копій є альтернативою, яка зберігає друковану версію ASCII без змін і кодів тільки байтів 128-255 і кілька спеціальних символів.
У роботі приклад: читання джерела сировини — пошук частини Base64 і декодування невеликого текстового вкладення
Текстовий файл з переважно ASCII залишилося читати, якщо ви відкриваєте джерело повідомлень. Base64 обфузує все, навіть рівнинний ASCII текст. Котирування рідко використовується для бінарних файлів (це буде дуже неефективним для PDF) але іноді використовується для тексту. Для читання пошти вибирає кодування на основі типу вкладення; браузер не зазвичай просить користувача, який кодує наносити.
Корпус Base64 - це просто самі байти, не окремий файл. При перегляді вкладення в поштовому зчитувачі, зчитувач вже декодував Base64 і показує оригінальний файл.
Вартість розмірів на практиці — приблизно третина більше байтів, а чому обмеження розміру пошти заявлені на зашифрований розмір
Якщо ви переглядаєте джерело повідомлень (в більшості клієнтів пошти), то побачите MIME заголовки та корпус Base64-encoded. Інструмент для кодування вкладок Base64 та декодера може допомогти вам вручну видалити фрагмент джерела повідомлення; копіювати частину бази64, видалити розриви рядків, і вставити його в інструмент.
Кілька вкладення в MIME повідомлення використовувати багатопартійний край. Кожна частина має власні заголовки (контент-Type, Content-Transfer-Encoding) та тіло. Альтернативна версія повідомлення відображається як одна частина, і кожен вкладення з'являється в іншій частині. Об'єднана рядок відокремлює частини; її не вибирають в будь-якому вмісті частини. Для читання пошти реконструює повідомлення, за допомогою приношення кордонів та декодування кожної частини згідно з його Контентом-Замовленням.
Що це не криється — закодовані заголовки, S/MIME розширення 8BITMIME на глибину
RFC 2045 base64 кодування не є універсальним сьогодні. Підтримка поштових систем 8- транспортний транспорт і більше не потрібно базового64. Деякі системи використовують різні імена кодувань або додають на замовлення заголовки. Але base64 з 76-змінні лінії залишаються найбільш сумісним вибором для вкладення, які повинні досягати будь-якої поштової системи, в будь-якій точці світу. Коли ви прикріплюєте файл за допомогою поштового клієнта, клієнт зазвичай вибирає базову64 для бінарних файлів, ручає обгортання рядків, і додає до нього файл MIME головки.
Розуміння механізму допоможе вам відхилити при налаштуванні, що ви пошкоджені або коли ви вручну працюєте з джерелом повідомлень. Будівля або задача повідомлення електронної пошти, що вихідної пошти вимагає розуміння MIME структура. Бібліотека повинна обробляти кодування, обгортання рядків та заголовків; ви не зазвичай не побудуєте MIME ручний. Але якщо ви придбаємо джерело сировини (вилучення питання доставки, або вилучення вкладень программатично), знаючи, що зміст-передача-Encoding: base64 означає наступне тіло 76-character-wrapped base64 дозволяє застосувати правий декодер.
Takeaway: Base64 є шаром сумісності електронної пошти — як Base64 енкодер і декодер дозволяє читати невелику текстову частину з сировини локально
Основа64 - стандарт RFC 4648; обгортання та MIME для отримання додаткової інформації, ви можете звернутися до служби електронної пошти. Вкладення електронної пошти є базовим64, оскільки електронна пошта була побудована для звичайного тексту та base64 є найпростішим, найбільш універсальним шаром сумісності для надсилання бінарних даних через текстовий протокол. Мистецтво 76-вимір лінійної лінії - історичний артефакт терміналів 1980-х і повільних мереж, але він зберігається як стандарт сумісності.
Розуміння історії пояснює, чому MIME існує, чому існує декілька варіантів кодування, і чому base64 залишається за замовчуванням для вкладення навіть якщо сучасні системи пошти можуть підтримувати бінарні безпосередньо. Баз64 енкодер і декодер дозволяє вам вручну працювати з MIME тіл для перевірки або видалення кодування.