Для чего используется кодировка base 64? - PullRequest
686 голосов
/ 14 октября 2008

Я слышал, как люди говорили о «кодировке base 64» здесь и там. Для чего он используется?

Ответы [ 17 ]

7 голосов
/ 14 октября 2008

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

Например, вложения электронной почты отправляются таким образом.

5 голосов
/ 21 сентября 2017

«Схемы кодирования Base64 обычно используются, когда необходимо кодировать двоичные данные, которые необходимо хранить и передавать через носители, предназначенные для работы с текстовыми данными. Это делается для того, чтобы данные оставались без изменений во время транспортировки »(Wiki, 2017)

Пример может быть следующим: у вас есть веб-сервис, который принимает только символы ASCII. Вы хотите сохранить, а затем перенести данные пользователя в другое место (API), но получатель хочет получить нетронутые данные. Base64 для этого. , , Единственным недостатком является то, что для кодирования base64 требуется примерно на 33% больше места, чем для обычных строк.

Другой пример :: uenc = url encoded = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http://loc.querytip.com/asics-men-s-gel-kayano-xii.html.

Как вы можете видеть, мы не можем поставить символ «/» в URL, если мы хотим отправить последний посещенный URL в качестве параметра, потому что мы нарушили бы правило атрибута / значения для «MOD rewrite» - параметр GET.

Полный пример: «http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men-s-gel-kayano-xii.html/product/93/

4 голосов
/ 14 октября 2008

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

3 голосов
/ 14 октября 2008

Чтобы немного рассказать о том, что говорит Брэд: многие транспортные механизмы для электронной почты и Usenet, а также другие способы перемещения данных не являются "8-битными чистыми", что означает, что символы вне стандартного набора символов ascii могут быть искажены при передаче - например, 0x0D может рассматриваться как возврат каретки и превращаться в возврат каретки и перевод строки. Base 64 отображает все двоичные символы в несколько стандартных букв и цифр ascii и знаков препинания, поэтому они не будут искажены таким образом.

2 голосов
/ 10 мая 2019

Несколько лет назад, когда была введена функциональность почтовой рассылки, так что с течением времени она полностью основывалась на тексте, и возникла потребность в приложениях, таких как изображения и мультимедиа (аудио, видео и т. Д.). Когда эти вложения отправляются через Интернет (в основном в виде двоичных данных), вероятность повреждения двоичных данных в исходном виде высока. Итак, для решения этой проблемы пришел BASE64.

Проблема с двоичными данными состоит в том, что они содержат нулевые символы, которые в некоторых языках, таких как C, C ++, представляют конец символьной строки, поэтому отправка двоичных данных в необработанном виде, содержащем NULL-байты, не дает файлу полностью считываться и приводит к повреждению. данные.

Например:

В C и C ++ этот «нулевой» символ показывает конец строки. Таким образом, «Привет» хранится так:

H E L L O

72 69 76 76 79 00

00 говорит "остановись здесь".

Теперь давайте рассмотрим, как работает кодировка BASE64.

Обратите внимание: длина строки должна быть кратна 3.

Пример 1:

Строка для кодирования: «туз», длина = 3

1) Преобразовать каждый символ в десятичную.

а = 97, с = 99, е = 101

enter image description here

2) Заменить каждое десятичное на 8-битное двоичное представление.

97 = 01100001, 99 = 01100011, 101 = 01100101

Комбинировано: 01100001 01100011 01100101

3) Отдельно в группе 6 бит.

011000 010110 001101 100101

4) Рассчитать двоичное число в десятичное

011000 = 24, 010110 = 22, 001101 = 13, 100101 = 37

5) Преобразуйте десятичные символы в base64 с помощью диаграммы base64.

24 = Y, 22 = W, 13 = N, 37 = 1

«туз» => «YWNl»

enter image description here

Пример 2:

Строка для кодирования: «abcd» Length = 4, она не кратна 3. Поэтому, чтобы сделать длину строки кратной 3, мы должны добавить 2-битное заполнение, чтобы сделать length = 6. Бит заполнения представлен как «=» знак.

Следует отметить: один бит дополнения равен двум нулям 00, поэтому два бита дополнения равны четырем нулям 0000.

Итак, давайте запустим процесс: -

1) Преобразовать каждый символ в десятичную.

a = 97, b = 98, c = 99, d = 100

2) Заменить каждое десятичное на 8-битное двоичное представление.

97 = 01100001, 98 = 01100010, 99 = 01100011, 100 = 01100100

3) Разделить группу на 6 бит.

011000, 010110, 001001, 100011, 011001, 00

, поэтому последний 6-бит не является полным, поэтому мы вставляем два бита заполнения, равных четырем нулям «0000».

011000, 010110, 001001, 100011, 011001, 000000 ==

Теперь оно равно. Два знака равенства в конце показывают, что были добавлены 4 нуля (помогает при декодировании).

4) Рассчитать двоичные числа в десятичные.

011000 = 24, 010110 = 22, 001001 = 9, 100011 = 35, 011001 = 25, 000000 = 0 ==

5) Преобразование десятичных символов в base64 с использованием диаграммы base64.

24 = Y, 22 = W, 9 = j, 35 = j, 25 = Z, 0 = A ==

«abcd» => «YWJjZA ==»

2 голосов
/ 10 октября 2013

Base64

Base64 - это общий термин для ряда аналогичных схем кодирования, которые кодируют двоичные данные, обрабатывая их численно и переводя в представление base 64. Термин Base64 происходит от конкретной кодировки передачи содержимого MIME.

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

0 голосов
/ 23 февраля 2014

Base64 может использоваться для многих целей.

Основная причина - преобразовать двоичные данные во что-то сносное.

Я иногда использую его для передачи данных JSON с одного сайта на другой, для хранения информации в куки о пользователе.

Примечание: Вы «можете» использовать его для шифрования - я не понимаю, почему люди говорят, что вы не можете, и что это не шифрование, хотя его легко взломать и осудить. Шифрование означает не что иное, как преобразование одной строки данных в другую строку данных, которая может быть либо расшифрована позднее, либо нет, и именно это делает base64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...