Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Tobiking

1x Rätselkönig

  • Private Nachricht senden

21

12.09.2014, 11:36


Müsste das gehashte Passwort nicht bei allen 3en gleich sein ?

Nein, der Salt ist genau dafür da um das zu verhindern. Ansonsten könnte man eine Datenbank mit Passwort <-> Hashwert einfach mit den Hashwerten abgleichen und das Passwort rekonstruieren.

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

22

12.09.2014, 12:10

Aber ich dachte das eine ist der gehashte Salt und das andere das gehashte Passwort ?
Kann ich damit irgendwas nun anfangen ?
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

23

12.09.2014, 12:16

Hash != Verschlüsselung.
Du kannst aus einem Hashwert keine Rückschlüsse auf den Ursprungswert ziehen.
Das übliche Vorgehen ist dabei, beim Login eben genau die gleichen Schritte zu machen, wie beim setzen des Passworts, und dann eben diese beiden Hashes zu vergleichen.

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

24

12.09.2014, 13:12

Ja das ist mir schon klar, kann ich aber mit diesen angaben die ich euch gezeigt habe also diesem gehashten passwort von dem ich ja den salt wert aus dem passwort anscheinend weiß, das gleiche hashing vornehmen in java ?
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

25

12.09.2014, 13:24

Klar, du liest den Salt aus, packst ihn an das Ende des Eingabepassworts (oder wo auch immer der angehangen wurde vorher) und hashed das ganze wieder.
Dann bekommst du den richtigen Hash.

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

26

12.09.2014, 14:43

Also ich nehme diesen Eintrag aus der Datenbank:
$2y$10$eh6J.za3TuwGpDvUJbfR5uTBcn9MB22qx7OdgIrPEDfx0FP4thMaO

Lese somit diesen Salt Wert heraus:
"$2y$10$eh6J.za3TuwGpDvUJbfR5u"

Ich übergebe einer BCrypt Funktion das Passwort indiesem Fall "passwort" und als salt "$2y$10$eh6J.za3TuwGpDvUJbfR5u"
Die Funktion spuckt mir das hier aus ?
$2y$10$eh6J.za3TuwGpDvUJbfR5uTBcn9MB22qx7OdgIrPEDfx0FP4thMaO

die Funktion hängt den Salt Wert als Original nochmal davor an




C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
import org.springframework.security.crypto.bcrypt.BCrypt;
public class Main
{
public static void main(String[] args)
{
        String hash="$2y$10$eh6J.za3TuwGpDvUJbfR5u";
        hash.replace("$2y$","$2a$"); //die inkorrekte 2y Variante mit 2a ersetzen

    String hashed = BCrypt.hashpw("passwort","$2y$10$eh6J.za3TuwGpDvUJbfR5u" );
    System.out.println(hashed);
    
}
}


Folgendes Problem die Funktion akzeptiert als Typ des Salts kein $2y$10$ sondern nur $2a$10$, versuche ich als salt die 2y Variante dann bekomme ich eine "java.lang.IllegalArgumentException: Invalid salt revision" mit 2a funktioniert es einwandfrei.

Habe folgendes gefunden:

2a - the official BCrypt algorithm and a insecure implementation in crypt_blowfish

2y - suggested new marker for the fixed crypt_blowfish

Ahh ich habs, man muss einfach 2a statt 2y nehmen dann kommt der selbe hash raus, sehr gut vielen Dank für die viele Hilfe, jetzt kann ich den Mist zuende Programmieren.
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Daedra22« (12.09.2014, 17:58)


Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

27

13.09.2014, 05:23

In der Datenbank hast Du Salt und Hash des Passworts gespeichert. Beim Anmelden machst Du, wie DeKugelschreiber schon schrieb, die gleichen Schritte nochmal.

In PHP würde das in etwa so aussehen

Quellcode

1
2
3
4
if ( $database_password == hash ( $_POST [ 'password' ] , $database_salt ) )
{
    // anmeldung erfolgreich
}


Freundliche Grüße
Stazer

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

28

17.09.2014, 16:43

Neuerdings gibt es in PHP password_hash (http://php.net/manual/de/function.password-hash.php) und password_verify (http://de2.php.net/manual/de/function.password-verify.php), die automatisch das Salten und vergleichen erledigen.

Werbeanzeige