J'apprends la sécurité des mots de passe Linux (plus de curiosité que tout ce qui est utile) et je comprends que le vrai mot de passe est haché et stocké dans le fichier de mot de passe caché. Ce dont je ne suis pas sûr et que je n'ai pas pu trouver dans mon bref Google, c'est quel encodage est utilisé pour encoder la valeur hachée (et la valeur du sel). Ce n'est évidemment pas hexadécimal, et c'est évidemment du texte, à l'exclusion du :
caractère. Quelqu'un peut-il me dire ici ce qu'est cet encodage?
Edit: je comprends le hachage (MD5, SHA-X), le sel et le spécificateur de hachage. Ce que je recherche, c'est la méthode de conversion des résultats de hachage (un tableau d'octets (octet [])) en la séquence de caractères que je vois dans le fichier, c'est-à-dire l'encodage.
Réponses:
Dans le cas de MD5 crypt (), le sel n'est qu'une chaîne aléatoire de 8 caractères au maximum de [a-zA-Z0-9./].
Le sel et le mot de passe sont ensuite hachés ensemble, passés par une fonction de renforcement, puis encodés à l'aide d'une variante sur Base64:
la source
Si vous voulez seulement savoir comment le mot de passe est encodé, crypt () utilise un encodage spécial de type Base64.
Le codage Base64 utilise le jeu de caractères suivant: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /
Alors que l' encodage crypt () utilise ce jeu de caractères: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
De plus, contrairement à Base64, il n'y a pas de remplissage "=".
D'un autre côté, les implémentations crypt () de MD5, SHA-X, etc. font plus que simplement générer un sel aléatoire, exécuter la fonction de hachage et l'encoder en utilisant l'ancien encodage.
Je recommande de lire ces deux excellents articles: "Hachage de mot de passe avec MD5-crypt en relation avec MD5" et "Implémentation de SHA512-crypt vs MD5-crypt" , pour une explication plus complète.
la source
La première partie du hachage entre les $ indique quel algorithme est utilisé.
Consultez http://en.wikipedia.org/wiki/Crypt_%28Unix%29 pour une liste de la signification des différentes valeurs.
la source
Recherchez-vous l'algorithme utilisé?
Traditionnellement, Unix et les premières variantes de Linux utilisaient un DES affaibli basé sur un maximum de 8 caractères du mot de passe. La plupart des installations Linux modernes utilisent des hachages MD5 pour les mots de passe, et certaines prennent en charge SHA. De plus, une prise en charge plus modulaire d'algorithmes supplémentaires est apparue, y compris Blowfish. La libc GNU utilisée par la plupart des Linux prend en charge DES, MD5 et SHA, vous offrant quelques options.
Le type spécifique d'algorithme de hachage utilisé est spécifié comme début du mot de passe par $ DIGIT $. Par exemple, $ 1 $ est MD5.
Vous pouvez obtenir des détails plus approfondis sur Wikipedia (voir la page sur Crypt_ (Unix) ) ou sur google pour «crypt unix» ou «crypt linux».
la source