Какова цель кодирования base 64 и почему оно используется в базовой аутентификации HTTP?

У меня не работает шифрование Base64.

Если можно расшифровать строку Base64, какова ее цель?

Почему он используется для базовой аутентификации HTTP?

Это все равно, что сказать кому-то, что мой пароль изменен на OLLEH.

Люди, увидевшие OLLEH, узнают, что первоначальный пароль был HELLO.


person ajsie    schedule 01.11.2010    source источник
comment
связанные: Почему Base64 в базовой аутентификации и Кодировка Base 64 в HTTP Basic Auth   -  person Hawkeye Parker    schedule 12.11.2014
comment
security.stackexchange.com/questions/29916/   -  person n611x007    schedule 03.11.2015
comment
base64 - это не шифрование, это кодировка   -  person n611x007    schedule 03.11.2015


Ответы (7)


Base64 - это не шифрование, это кодировка. Это способ представления двоичных данных с использованием только печатных (текстовых) символов.

См. этот абзац на странице википедии для базовой HTTP-аутентификации:

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

person Matt Bridges    schedule 01.11.2010
comment
Кроме того, кажется, что соответствующая кодировка символов для получения «двоичных данных» из строки должна быть iso-8859-1. (источник) - person Myobis; 24.04.2014

Обычно это называется кодировкой base64, а не шифрованием! Хорошая вещь в кодировке base64 заключается в том, что она позволяет вам представлять (двоичные) данные, используя только ограниченное общее подмножество доступных символов, что намного эффективнее, чем просто запись строки из 1 и 0, например, как ASCII.

person Flexo    schedule 01.11.2010
comment
+1, но сравнение с хранением данных в потоке 1с, 0с слишком преувеличено. Лучше сравнить это с хранением данных в шестнадцатеричном формате. Потому что hex создаст только x2 байтов больше, чем исходный поток, а 1s,0s - сделает x8 раз больше байтов. (А Base64 делает x1.3 больше данных, чем исходный массив байтов). Поэтому иногда допустимо кодировать двоичный поток в виде шестнадцатеричной строки, удваивая количество байтов - например, просто для хранения хэша пароля в базе данных. - person Agnius Vasiliauskas; 22.10.2011

Для Encryption требуется ключ ( строка или алгоритм) для расшифровки; отсюда и "крипт" (корень:криптография)

Encoding изменяет/меняет/ изменяет код символа на другой. В этом случае обычные байты данных теперь могут быть легко представлены и переданы с использованием HTTP.

person vol7ron    schedule 01.11.2010
comment
Шифрование просто означает отображение скрытого — криптография на основе ключей — совсем недавнее изобретение. Шифрование — это форма кодирования, которая использовалась в качестве шифрования (но не никем старше 12 лет на протяжении сотен лет). - person ; 01.11.2010
comment
Шифрование в просторечии используется для обозначения последних режимов шифрования, в частности, компьютерного шифрования, основанного на ключе (открытый/закрытый ключ). Хотя это и правда, нет необходимости указывать буквальное определение устаревшего слова; в противном случае вы бы оспаривали историческое определение многих английских слов, используемых сегодня. Просторный (а иногда и разговорный) - это то, что придает словам контекст и, следовательно, определение. - person vol7ron; 01.11.2010
comment
Я не думаю, что вы звучали грубо; Я согласен с вашим мнением о современном контексте. Слова и определения постоянно развиваются. Я думаю, что кодирование и шифрование определенно имеют два очень разных определения в современных вычислениях, и ваш ответ делает хорошую попытку обобщить различия. - person Dan Bechard; 05.06.2015
comment
Кодировка Base64 — это форма обфускации, которая просто означает сделать неясным. Для многих приложений этого шифрования достаточно, когда цель состоит в том, чтобы, например, просто исказить любой открытый текст, отправленный по сети. - person Dominic Cerisano; 20.11.2016
comment
@DominicCerisano: Нет, кодировка base64 не считается шифрованием, и я надеюсь, что вы не используете ее для защиты чего-либо. - person Ry-♦; 20.11.2016
comment
@ryan, это определенно не сильное шифрование, и я согласен, что его следует учитывать только в ситуациях, требующих слабого шифрования. Хотите пример? - person Dominic Cerisano; 21.11.2016

Возможно, вы имели в виду «Кодировку Base 64». Шифрование — это не то же самое, что кодирование.

Википедия: шифрование

person Andy    schedule 01.11.2010

На повседневном языке «код» — это что-то тайное. В науке и технике кодекс — это просто соглашение, набор правил того, как что-то писать.

Этот код может быть секретным. В этом случае это называется шифрованием. Но вообще код не секрет. Возьмите генетический код. В нем просто говорится, что наша ДНК построена из четырех разных оснований — A, C, G и T, и что три основания, взятые вместе, образуют одну аминокислоту. Также есть таблица, в которой три буквы образуют аминокислоту.

В этом коде нет ничего секретного.

Точно так же Base64 не является секретным кодом. Скорее, это код, который позволяет хранить данные в шести битах на символ (таким образом, имеется 64 различных объекта, т.е. «база» системы равна 64, точно так же, как база нашей десятичной системы равна 10, поскольку существует 10 различных объектов). называются «цифрами»).

person Konrad Rudolph    schedule 01.11.2010

Кодирование Base-64 является частью спецификаций MIME. Он обеспечивает безопасное для передачи кодирование данных, которые не будут пережеваны, если/когда они будут ретранслированы через хост, который использует схему кодирования, отличную от используемой исходным клиентом.

На межтрубках есть много разных хостов, и вы не можете предположить поддержку чего-либо, кроме 7-битного ASCII, без риска потери/путаницы данных.

Мейнфреймы IBM, например, используют кодировку EBCDIC (которая бывает разных видов). Его кодовые точки полностью отличаются от кодовых точек, используемых компьютерами на основе ASCII - в ASCII буквы A-Z равны 0x41 - 0x5A; в EBCDIC буквы A-Z даже не являются непрерывным диапазоном: буквы A-I находятся в диапазонах 0xC1 - 0xC9, буквы J-R - в диапазонах 0xD1 - 0xD9, а буквы S-Z - в диапазонах 0xE2 - 0xE9.

person Nicholas Carey    schedule 01.11.2010

По умолчанию параметры поля заголовка сообщения в сообщениях протокола передачи гипертекста (HTTP) не могут содержать символы, не входящие в набор символов ISO-8859-1.

Если имя пользователя и пароль содержат несовместимую кодировку, HTTP не сможет передать этот текст. чтобы предотвратить это, мы кодируем имя пользователя и пароль с помощью base64, чтобы убедиться, что мы отправляем совместимый с HTTP символ через HTTP. для получения дополнительной информации см. этот Basic_access_authentication

person Varun    schedule 27.06.2019