ja berechnen trifft es nicht ganz. Man kann über ein vorgefertigtes Wörterbuch einem Brute-Force-Attack oder aus einer Mischung von beiden eine möglichen Schlüssel erhalten. Er kann nicht direkt berechnet werden. Ob man den Salt kennt oder nicht, mach natürlich nur aufgrund der Länge einen Unterschied. Kurze Passwörter sind sehr anfällig für Brute-Force-Attacks.
Der Salt-Wert ist idR. bekannt und muss auch nicht versteckt werden, da er nur dazu dient die Entropie zu erhöhen und das Massenhafte "entschlüsseln" von Passwörtern zu erschweren.
Zudem sollte ein Salt-Wert immer so lange sein und so eine große Varianz besitzen, dass er unmöglich in einem Dictionary oder einer vollumfänglichen Brute-Force-Liste vorkommen wird.
Zusätzlich einen geheimen Hash zu verwenden ist natürlich immer noch möglich - in diesem Szenario (ein Login zu schützen) aber unsinnig:
Da hast du natürlich recht, dass hätte ich schon bei der bisherigen Diskussion einbringen sollen. Demnach wäre das Hashen von Passwörtern sogar komplett sinnlos, da es nur erfolgt, wenn der Angreifer die Seite nicht manipulieren kann. Wenn er in der Lage ist Pakete mitzulesen, müsste er sie eigentlich auch ohne einen erheblichen Mehraufwand verändern können. Ich kenne mich ehrlich gesagt in der praktischen Durchführung eines Angriffes nicht mehr gut genug aus, um den Mehraufwand beurteilen zu können. Theoretisch ist es aber definitiv möglich.
Wireshark + ein HTML-Formular (selbst erstellt, entsprechend dem Login-Formular) und los: egal ob Klartext, HHash oder salted Hash - in wenigen Minuten ist das Login geknackt.
Für mich gibt es eigentlich nur zwei sinnvolle Lösungen: Entweder das Passwort im Klartext versenden oder TLS einzusetzen.
Sagte ich das nicht die ganze Zeit? ;) Entweder Klartext oder gleich SSL bzw. TSL wie's mittlerweile heißt :p