Для чего используется кодировка base 64?

Я одобряю объектный подход, чтобы избежать ненужных поисков. Объекты свойств могут быть так же легко заполнены, когда вы вызываете свой заводский метод для построения всей сущности (используя простой код обратного вызова для вложенных объектов). Нет никаких недостатков, которые я вижу, кроме использования памяти (но вы бы кешировали свои объекты правильно?). Таким образом, все, что вы делаете, заключается в замене стека на кучу и повышение производительности из-за неэффективности поиска. Надеюсь, это имеет смысл.

695
задан Slothworks 20 December 2015 в 09:48
поделиться

11 ответов

Когда у Вас есть некоторые двоичные данные, которые Вы хотите поставить через сеть, Вы обычно не делаете этого, просто передав потоком биты и байты по проводу в формате .raw. Почему? потому что некоторые медиа сделаны для потоковой передачи текста. Вы никогда не знаете - некоторые протоколы могут интерпретировать Ваши двоичные данные как управляющие символы (как модем), или Ваши двоичные данные могли быть завинчены, потому что базовый протокол мог бы думать, что Вы ввели комбинацию специального символа (как то, как FTP переводит окончания строки).

Так для обхождения этого люди кодируют двоичные данные в символы. Base64 является одним из этих типов кодировки.

, Почему 64?
, поскольку можно обычно полагаться на те же 64 символа, присутствующие во многих наборах символов, и можно быть довольно уверены что попытка данных закончиться с другой стороны неповрежденного провода.

848
ответ дан illusionist 20 December 2015 в 09:48
поделиться

Главным образом я видел, что это раньше кодировало двоичные данные в контекстах, которые могут только обработать ASCII - или простое - наборы символов.

4
ответ дан Eric Tuttleman 20 December 2015 в 09:48
поделиться

Для расширения немного на том, что говорит Brad: много транспортных механизмов для электронной почты и Usenet и других способов переместить данные не "8 битов, чистых", что означает, что символы вне стандартного набора символов ASCII могли бы быть искажены в пути - например, 0x0D мог бы рассматриваться как возврат каретки и превращаться возврат каретки и перевод строки. Основывайте 64 карты все двоичные символы в несколько стандартных букв ASCII и чисел и пунктуации, таким образом, они не будут искажены этот путь.

3
ответ дан Paul Tomblin 20 December 2015 в 09:48
поделиться

Я использую его в практическом смысле, когда мы передаем большие двоичные объекты (изображения) через веб-сервисы. Таким образом, когда я тестирую веб-сервис C# с помощью сценария Python, двоичный объект может быть воссоздан с небольшим волшебством.

[В Python]

import base64
imageAsBytes = base64.b64decode( dataFromWS )
7
ответ дан blasteralfred Ψ 20 December 2015 в 09:48
поделиться

Это используется для преобразования произвольных двоичных данных к тексту ASCII.

, Например, почтовые вложения отправляются этот путь.

7
ответ дан Can Berk Güder 20 December 2015 в 09:48
поделиться

Некоторые протоколы транспортировки только позволяют алфавитно-цифровым символам быть переданными. Просто вообразите ситуацию, где управляющие символы используются для инициирования специальных действий и/или который только поддерживает ограниченную разрядную ширину на символ. Base64 преобразовывает любой вход в кодирование, которое только использует алфавитно-цифровые символы, +, / и = как дополнительный символ.

11
ответ дан Konrad Rudolph 20 December 2015 в 09:48
поделиться

От http://en.wikipedia.org/wiki/Base64

термин Base64 относится к определенному кодированию передачи содержания MIME. Это также используется в качестве общего обозначения для любой подобной схемы кодирования, которая кодирует двоичные данные путем обработки его численно и перевода его в основу 64 представления. Конкретный выбор основы происходит из-за истории кодирования набора символов: можно выбрать ряд 64 символов, который является и частью подмножества, характерного для большей части кодировки, и также печатаемого. Эта комбинация оставляет данные вряд ли, чтобы быть измененной в пути через системы, такие как электронная почта, которые были традиционно не 8-разрядные чистый.

Base64 может использоваться во множестве контекстов:

  • Эволюция и Thunderbird используют Base64 для запутывания почтовых паролей [1]
  • , Base64 может использоваться, чтобы передать и сохранить текст, который мог бы иначе вызвать коллизию разделителя
  • , Base64 часто используется в качестве быстрого, но небезопасного ярлыка для затемнения секретов, не подвергаясь издержкам управления криптографическим ключом

  • , Спаммеры используют Base64 для уклонения от основных инструментов антиспама, которые часто не декодируют Base64 и поэтому не могут обнаружить ключевые слова в закодированных сообщениях.

  • Base64 используется для кодирования символьных строк в файлах LDIF
  • , Base64 иногда используется для встраивания двоичных данных в XML-файл, с помощью синтаксиса, подобного......, например, bookmarks.html Firefox.
  • Base64 также используется при связи с правительством Финансовых печатающих устройств Подписи (обычно по последовательным или параллельным портам) для уменьшения задержки при передаче символов получения для подписания.
  • Base64 используется, чтобы закодировать двоичные файлы, такие как изображения в рамках сценариев, избежать в зависимости от внешних файлов.
  • Может использоваться для встраивания необработанных данных изображения в свойство CSS, такое как фоновое изображение.
25
ответ дан Amal Murali 20 December 2015 в 09:48
поделиться

Кодировка Base 64 является способом взять двоичные данные и превратить его в текст так, чтобы он был более легко передан в вещах как данные HTML-формы и электронная почта.

http://en.wikipedia.org/wiki/Base64

117
ответ дан Brad Wilson 20 December 2015 в 09:48
поделиться

Это - в основном способ закодировать произвольные двоичные данные в тексте ASCII. Требуется 4 символа на 3 байта данных плюс потенциально немного дополнения в конце.

По существу каждый 6 битов входа кодируется в алфавите с 64 символами. "Стандартный" алфавит использует A-Z, a-z, 0-9 и + и/, с = как дополнительный символ. Существуют БЕЗОПАСНЫЕ ОТ URL варианты.

Википедия является довольно хорошим источником большей информации.

193
ответ дан Jon Skeet 20 December 2015 в 09:48
поделиться

Это - текстовое кодирование двоичных данных, где результирующий текст имеет только буквы, числа и символы "+", "/" и "=". Это - удобный способ хранить/передавать двоичные данные по медиа, который конкретно используется для текстовых данных.

, Но почему Основа 64? Эти две альтернативы для преобразования двоичных данных в текст, которые сразу приходят на ум:

  1. Десятичное число: сохраните десятичное значение каждого байта как три числа: 045 112 101 037 и т.д., где каждый байт представлен на 3 байта. Данные чрезмерно увеличиваются в размерах втрое.
  2. Шестнадцатеричный: сохраните байты как шестнадцатеричных пар: 1 А AC 47 0D и т.д., где каждый байт представлен на 2 байта. Данные чрезмерно увеличиваются в размерах вдвое.

Основа 64 карты 3 байта (8 x 3 = 24 бита) в 4 символах, которые охватывают 6 битов (6 x 4 = 24 бита). Результат смотрит что-то как "TWFuIGlzIGRpc3Rpb...". Поэтому чрезмерное увеличение размера является только простым 4/3 = 1.3333333 раза оригинал.

111
ответ дан Ates Goral 20 December 2015 в 09:48
поделиться

В первые годы компьютеров, когда телефонная линия межсистемная коммуникация не была особенно надежна, быстрый & грязный метод проверки целостности данных использовался: "разрядная четность". В этом методе каждый переданный байт имел бы 7 битов данных, и 8-е будет 1 или 0, чтобы вынудить общее количество 1 бита в байте быть ровным.

Следовательно 0x01 был бы передан как 0x81; 0x02 был бы 0x82; 0x03 остался бы 0x03 и т.д.

К далее этой системе, когда набор символов ASCII был определен, только 00-7F были присвоенные символы. (Все еще сегодня весь набор символов в диапазоне, с 80 FF, нестандартен)

, Много маршрутизаторов дня помещают проверку четности и перевод байта в аппаратные средства, вынуждая компьютеры, присоединенные к ним иметь дело строго с 7-разрядными данными. Эти почтовые вложения силы (и все другие данные, которые являются почему HTTP & протоколы SMTP основаны на тексте), чтобы быть преобразовывают в формат только для текста.

Немногие маршрутизаторы, пережившие в 90-е. Я сильно сомневаюсь, что любой из них используется сегодня.

24
ответ дан Backwards_Dave 20 December 2015 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: