Какова цель кодировки base 64 и почему она используется в базовой аутентификации HTTP?
Я не получаю шифрование Base64.
Если можно расшифровать строку Base64, какова ее цель?
Почему он используется для аутентификации HTTP Basic?
Это как сказать кому-то, что мой пароль перевернут в OLLEH.
Люди, увидевшие OLLEH, узнают, что первоначальный пароль был HELLO.
6 ответов
Base64 - это не шифрование, это кодировка. Это способ представления двоичных данных с использованием только печатных (текстовых) символов.
Посмотрите этот абзац со страницы Википедии для HTTP Basic Authentication:
Хотя кодирование имени пользователя и пароля с помощью алгоритма Base64 обычно делает их нечитаемыми невооруженным глазом, они так же легко декодируются, как и кодируются. Безопасность не является целью шага кодирования. Скорее, цель кодирования состоит в том, чтобы закодировать не HTTP-совместимые символы, которые могут быть в имени пользователя или пароле, в те, которые HTTP-совместимы.
Обычно это называется кодировкой base64, а не шифрованием! Хорошая вещь в кодировке base64 заключается в том, что она позволяет вам представлять (двоичные) данные, используя только ограниченное общее подмножество доступных символов, гораздо эффективнее, чем просто записать строку из 1 и 0, например, в ASCII.
Для шифрования требуется ключ (строка или алгоритм); отсюда и "крипта" (корень: криптография)
Кодирование изменяет / сдвигает / изменяет код символа на другой. В этом случае обычные байты данных теперь могут быть легко представлены и транспортированы с использованием HTTP.
Кодирование Base-64 является частью спецификаций MIME. Он обеспечивает безопасную для транспорта кодировку данных, которые не будут разжевываться, если / когда они будут передаваться через хост, который использует схему кодирования, отличную от той, которая использовалась исходным клиентом.
В интертубах много разных хостов, и вы не можете предполагать поддержку чего-либо, кроме 7-битного ASCII, без риска потери данных / путаницы.
Например, мэйнфреймы IBM используют кодировку, называемую EBCDIC (которая имеет множество разновидностей). Его кодовые точки полностью отличаются от кодовых точек, используемых ASCII-путтерами - в ASCII буквы AZ равны 0x41 - 0x5A; в EBCDIC буквы A-Z даже не являются непрерывным диапазоном: буквы AI живут в 0xC1 - 0xC9, буквы JR живут в 0xD1 - 0xD9, а буквы SZ живут в 0xE2 - 0xE9.
Вы можете иметь в виду "кодирование Base 64". Шифрование - это не то же самое, что шифрование.
В повседневном языке "код" - это нечто секретное. В науке и технике код - это просто соглашение, набор правил того, как что-то написать.
Этот код может быть секретным. В этом случае это называется шифрованием. Но в целом код не является секретом. Возьми генетический код. В нем просто говорится, что наша ДНК построена из четырех разных основ - A
, C
, G
а также T
и что три основания, взятые вместе, образуют одну аминокислоту. Есть также таблица, из которой три буквы образуют, какая аминокислота.
В этом коде нет ничего секретного.
Кроме того, Base64 не является секретным кодом. Скорее, это код, который позволяет хранить данные в шести битах на символ (таким образом, существует 64 различных объекта, то есть "основа" системы равна 64, так же как основа нашей десятичной системы равна 10, поскольку существует 10 различных объектов называется "цифры").
По умолчанию параметры поля заголовка сообщения в сообщениях протокола передачи гипертекста (HTTP) не могут содержать символы вне набора символов ISO- 8859-1.
Если имя пользователя и пароль содержат несовместимую кодировку, HTTP не сможет перенести этот текст. во избежание этого мы кодируем имя пользователя и пароль с base64, чтобы убедиться, что мы отправляем HTTP-совместимый символ через HTTP. для получения дополнительной информации см. эту https://en.wikipedia.org/wiki/Basic_access_authentication