Warum werden MD5-Passwörter anders gehasht?

22

Ich habe mich schon eine Weile gefragt, warum das Ausführen von "echo 'helloworld' | openssl passwd -1 -stdin" jedes Mal zu unterschiedlichen Ergebnissen führt. Wenn ich einen der Hashes in meine / etc / shadow-Datei lege, kann ich sie als meine verwenden Passwort und Login auf meinem System, wie funktioniert es?

computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$xlm86SKN$vzF1zs3vfjC9zRVI15zFl1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$/0.20NIp$pd4X9xTZ6sF8ExEGqAXb9/
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$sZ65uxPA$pENwlL.5a.RNVZITN/zNJ1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$zBFQ0d3Z$SibkYmuJvbmm8O8cNeGMx1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$PfDyDWER$tWaoTYym8zy38P2ElwoBe/

Ich würde denken, dass ich, weil ich diesen Hash verwende, um dem System zu beschreiben, wie mein Passwort lauten soll, jedes Mal die gleichen Ergebnisse erzielen sollte. Warum nicht ich

Peter
quelle
3
Wenn sie jedes Mal gleich wären, könnte ein Angreifer einfach Milliarden von gängigen Passwörtern hacken und leicht nach ihnen suchen.
David Schwartz

Antworten:

37

Sie haben alle ein anderes Salz . Jedes Mal wird ein einzigartiges Salz ausgewählt, da Salze niemals wiederverwendet werden sollten. Durch die Verwendung eines eindeutigen Salzes für jedes Kennwort sind sie resistent gegen Regenbogentabellenangriffe .

Michael Hampton
quelle
6
Es könnte eine gute Idee sein zu erwähnen, dass die Ausgabe das Salt nach dem $ 1 $ enthält (die Dollarsymbole sind Trennzeichen).
Stöbern Sie am
6
Also ist in dem Hash von '$ 1 $ xlm86SKN $ vzF1zs3vfjC9zRVI15zFl1' xlm86SKN das Salz und vzF1zs3vfjC9zRVI15zFl1 das Hash von gesalzener helloworld?
Peter
2
@ Peter: genau.
Joachim Sauer
3

In der Tat erhalten Sie immer das gleiche Ergebnis, wenn Sie der Befehlszeile das Salz geben.

$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
danidemi
quelle