web-dev-qa-db-fra.com

Quel est l'objectif du codage en base 64 et pourquoi est-il utilisé dans l'authentification HTTP de base?

Je ne reçois pas le cryptage Base64.

Si on peut déchiffrer une chaîne Base64, à quoi sert-elle?

Pourquoi est-il utilisé pour l'authentification HTTP Basic?

C'est comme dire à quelqu'un que mon mot de passe est inversé dans OLLEH.

Les personnes qui verront OLLEH sauront que le mot de passe initial était HELLO.

124
ajsie

Base64 n'est pas un cryptage - c'est un encodage. C'est une façon de représenter des données binaires en utilisant uniquement des caractères imprimables (texte).

Voir ce paragraphe de page wikipedia pour l’authentification HTTP de base :

Bien que le codage du nom d'utilisateur et du mot de passe avec l'algorithme Base64 les rend illisibles à l'œil nu, ils sont aussi facilement décodés que codés. La sécurité n'est pas l'intention de l'étape d'encodage. Le codage a plutôt pour but de coder des caractères non compatibles avec HTTP qui peuvent figurer dans le nom d'utilisateur ou le mot de passe en ceux compatibles avec HTTP.

241
Matt Bridges

C'est ce qu'on appelle normalement encodage base64, pas cryptage! L’avantage de l’encodage en base64 est qu’il vous permet de représenter des données (binaires) en utilisant seulement un sous-ensemble commun limité de caractères disponibles, bien plus efficacement que simplement écrire une chaîne de 1 et de 0 sous la forme ASCII pour Exemple.

56
Flexo

En crypt ion nécessite une clé (chaîne ou algorithme) pour le déchiffrement; d'où le "crypt" (racine: cryptographie )

En cod ing modifie/décale/modifie un code de caractère en un autre. Dans ce cas, les octets habituels de données peuvent maintenant être facilement représentés et transportés via HTTP.

30
vol7ron

Dans le langage courant, un "code" est quelque chose de secret. En science et en ingénierie, un code est simplement un accord, un ensemble de règles permettant d’écrire quelque chose.

Ce code peut être secret. Dans ce cas, cela s'appelle un cryptage. Mais en général, un code n'est pas secret. Prenez le code génétique. Cela indique simplement que notre ADN est construit à partir de quatre bases différentes - A, C, G et T et que trois bases prises ensemble forment un acide aminé . Il y a aussi un tableau dont trois lettres forment quel acide aminé.

Ce code n’a rien de secret.

De même, Base64 n'est pas un code secret. C'est plutôt un code qui permet de stocker des données en six bits par caractère (il y a donc 64 entités différentes, c'est-à-dire que la "base" du système est 64, tout comme la base de notre système décimal est 10, puisqu'il y a 10 entités différentes. appelés "chiffres").

19
Konrad Rudolph

Vous pourriez vouloir dire "Encodage en Base 64". Le cryptage n'est pas la même chose que l'encodage.

Wikipedia: cryptage

18
Andy

Le codage en base 64 fait partie des spécifications MIME. Il fournit un encodage transport-safe pour les données qui ne seront pas traitées si/quand elles sont relayées via un hôte utilisant un schéma de codage différent de celui utilisé par le client d'origine.

Il y a beaucoup d'hôtes différents sur les intertubes et vous ne pouvez pas vraiment assumer le soutien de rien d'autre que de l'ASCII 7 bits, sans risquer de perdre des données/confusion.

Les mainframes IBM, par exemple, utilisent un codage appelé EBCDIC (qui se décline en plusieurs versions). Ses points de code sont complètement différents des points de code utilisés par les 'puters basés sur ASCII - en ASCII, les lettres A à Z sont 0x41 - 0x5A; dans EBCDIC, les lettres A à Z ne sont même pas une plage contiguë: les lettres A-I résident à 0xC1 à 0xC9, les lettres J-R à 0xD1 à 0xD9 et les lettres S-Z à 0xE2 à 0xE9.

17
Nicholas Carey

Par défaut, les paramètres de champ d'en-tête de message dans les messages HTTP (Hypertext Transfer Protocol) ne peuvent pas transporter de caractères en dehors du jeu de caractères ISO-8859-1.

Si le nom d'utilisateur et le mot de passe contiennent un jeu de caractères incompatible, HTTP ne pourra pas transporter ce texte. pour éviter cela, nous encodons le nom d'utilisateur et le mot de passe avec base64 afin de nous assurer que nous envoyons un caractère compatible HTTP sur HTTP. pour plus d'informations, voir ceci Basic_access_authentication

0
Varun