Quelle est la différence entre ce format:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
et le suivant:
5f4dcc3b5aa765d61d8327deb882cf99
Et aussi,
Comment transformer le premier format de hachage en le second?
Merci à avance.
Commentaires
Réponse
Le premier exemple ressemble à un formulaire fichier miroir à: ID (admin
) Algorithme (1
= MD5) Sel (aucun) Hash (oLN1UCc1Y3T30QkMcKMSx0
), avec le hachage dans ce qui semble être le format Base64.
Le second (5f4dcc3b5aa765d61d8327deb882cf99
) semble être une chaîne hexadécimale de 128 bits cohérente avec le fait dêtre un hachage MD5 comme bien.
Cependant, en convertissant les deux en binaire & puis en revenant à leurs formats opposés, les deux hachages ne correspondent pas:
-
Base64 de la valeur binaire représentée par la chaîne hexadécimale (
5f4dcc3b5aa765d61d8327deb882cf99
) estX03MO1qnZdYdgyfeuILPmQ
. -
À linverse, la chaîne hexadécimale du hachage base64 (
oLN1UCc1Y3T30QkMcKMSx0
) esta0b3755027356374f7d1090c70a312c7
.------- Edit -----
Comme user1686 a souligné: oLN1UCc1Y3T30QkMcKMSx0 est MD5crypt, qui est un millier de tours de MD5 avec des extras à chaque tour. Si ces deux hachages proviennent en fait du même mot de passe, il devrait être possible de convertir le hachage MD5 pur en son équivalent no-salt MD5Crypt en contournant le premier calcul MD5 dans MD5Crypt et en lui fournissant le hachage au lieu du mot de passe.
Réponse
La partie après le dernier $ est encodée en base64, ce qui est une manière raisonnablement compacte (quatre caractères deviennent trois octets) pour représenter les données binaires sous forme de caractères courants et imprimables (pas de codes de contrôle ASCII ou tout ce qui nécessite le bit haut). Le deuxième hachage est simplement codé hexadécimal, ce qui est moins efficace (quatre caractères deviennent deux octets) mais plus facile à lire, en particulier pour les programmeurs (qui utilisent hexadécimal tout le temps).
EDIT: De plus, le premier lalgorithme est presque certainement md5 crypt , qui est un MD5 itéré avec quelques tâches supplémentaires. Ainsi, il ne va pas produire la même sortie que la base MD5 pour une entrée donnée. Et en effet, nous voyons que ce nest pas le cas: si vous convertissez la pièce après le dernier $ en hexadécimal, il sort a0b3755027356374f7d1090c70a312c7. Cela pourrait aussi (à du moins en partie) parce que je pense que md5crypt utilise un base64 personnalisé, qui a les mêmes caractères que base64 normal dans un ordre différent.
Le premier hachage est un exemple du format de mot de passe / etc / shadow. $1
signifie MD5crypt, et labsence de quoi que ce soit entre les deux caractères $ suivants signifie quil est non salé. Nous navons pas de telles informations pour la seconde; il pourrait être salé, ou éventuellement un mot de passe différent, un algorithme de hachage différent, ou les deux. Il est cependant plus probable que ce soit MD5 nu que md5crypt.
Modifié pour refléter la différence entre MD5 et md5crypt
Commentaires
- Même si ' nest pas salé, $ 1 $ nest pas seulement un MD5 nu – il ' s md5crypt , ce qui implique 1000 tours de MD5 avec quelques autres assaisonnements ajoutés.
- Le deuxième hachage est juste md5 (' mot de passe ').
echo -n 'password' | md5sum
produit5f4dcc3b5aa765d61d8327deb882cf99
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. Jai également trouvé un cas similaire ici link