Яка справжня мета кодування Base64?


83

Чому ми маємо кодування Base64? Я новачок, і я справді не розумію, чому б ви затуманювали байти чимось іншим (якщо це не шифрування). В одній з книг я прочитав кодування Base64 корисно, коли двійкова передача неможлива. Напр. Коли ми розміщуємо форму, вона кодується. Але чому ми перетворюємо байти в літери? Чи не могли б ми просто перетворити байти у формат рядків із пробілом між ними? Наприклад 00000001 00000004,? Або просто 0000000100000004без пробілу, тому що байти завжди надходять у парі 8?


11
Тому що ви щойно перетворили 1 байт на 8, а не на 3 як 4, як це робите з base64 (якщо пам'ять мене правильно обслуговує). Пропускна здатність обмежена.
Брайан Роуч,

Ви плутаєте біти (хоча на 8 бітів ви робите байт) і байти, які можуть бути в будь-якій групі.
Денис Сегурет,

Відповіді:


109

Base64 - це спосіб кодування двійкових даних у набір символів ASCII, відомий майже кожній комп'ютерній системі, для передачі даних без втрати або модифікації самого вмісту. Наприклад, поштові системи не можуть мати справу з двійковими даними, оскільки вони очікують ASCII (текстові) дані. Отже, якщо ви хочете передати зображення або інший файл, він буде пошкоджений через спосіб роботи з даними.

Примітка: кодування base64 - це НЕ спосіб шифрування, ані спосіб ущільнення даних. Насправді зашифрований фрагмент даних base64 у 1,333 ... рази більше, ніж оригінальний обробник даних. Це лише спосіб переконатися, що під час передачі дані не втрачаються та не змінюються.


5
Дані, закодовані Base64, в 1,333 (3) рази більші за вихідні дані + додаткові 0-3 додаткові символи залежно від довжини вхідних даних за модулем 4. Це тому, що кожен закодований символ base64 зберігає інформацію на 6 бітів (64 різних символів) .
теж

2
як до, так і після дані все ще є двійковими. тоді чому дані втрачаються
Нареш Телі

12

Base64 - це механізм, що дозволяє представляти та передавати двійкові дані на середовищах, що дозволяють друкувати лише символи. Це найпопулярніша форма “Base Encoding”, інші відомі у використанні - Base16 і Base32.

Потреба в Base64 виникла з необхідності приєднувати двійковий вміст до електронних листів, таких як зображення, відео чи довільний двійковий вміст. Оскільки SMTP [RFC 5321] дозволяв у повідомленнях лише 7-бітові символи US-ASCII, виникла потреба представити ці двійкові октетні потоки, використовуючи сім бітових символів ASCII ...

Сподіваюся, це відповідає на запитання


3

Base64 - це більш-менш компактний спосіб передачі (фактично кодування, але з метою передачі) будь-якого виду двійкових даних.

Див. Http://en.wikipedia.org/wiki/Base64

"Загальним правилом є вибір набору з 64 символів, який є одночасно частиною підмножини, загальної для більшості кодувань, а також для друку."

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

Історично це базується на тому факті, що існує загальна підмножина (майже) усіх кодувань, що використовуються для зберігання символів у байтах, і що багато з 2 ^ 8 можливих байт ризикують втратити або перетворитись під час простої передачі даних (наприклад, послідовність вставлення-електронної пошти-електронної пошти отримання-копіювання-вставлення).

(будь ласка, перенаправіть "за" за коментар Брайана, я просто роблю його більш повним і, сподіваюся, більш чітким).


Ні, ще рано, і мені не хотілося розгадати повну відповідь. Це добре.
Брайан Роуч,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.