Hash Wert von Passwörter erstellen (SHA)

Status
Nicht offen für weitere Antworten.

oetzi

Bekanntes Mitglied
Hallo zusammen,

hätte nicht gedacht, dass dieses Thema so kompliziert wird...
Ich suche eine Möglichkeit Passwörter zu verschlüsseln.

Habe mich erstmal durch die Theorie zur Verschlüsselung gelesen und wenn ich nicht ganz falsch liege, bietet sich SHA-265 als sichere Verschlüsselung an.

Bin dann eigentlich davon ausgegangen, dass es direkt irgendwelche Javaklassen gibt, die mir die Funktionalität der SHA-265 Verschlüsselung bietet, aber ich finde da nichts vernümpftiges.
Stoße immer wieder auf irgendwelche Quellcodes, ich will ja aber nicht die Verschlüsselung neu schreiben, sondern einfach nutzen 🙂

Kann mir also wer helfen und nen Tipp geben, wie ich so simpel wie möglich meine Passwörter verschlüsseln kann?

Schönen Gruß
oetzi
 
Zuletzt bearbeitet:
>Ich suche eine Möglichkeit Passwörter zu verschlüsseln.

generell ist das nie gut. Normalerweise verschlüsselt man kein Password sondern legt es als zb MD5 Hash ab. Für einen Login wedern dann lediglich die beiden Hashs überprüft. Muss es wirklich Ver- und wieder entschlüsselt werden ist es wurst...kannst TEA nehmen zb. (Tiny Encryption Algo).
 
Morgen,
also eigentlich gefällt mir die Insel ja ganz gut, aber dieses Kapitel finde ich schlecht erklärt.

Habe hier im Forum eine sehr gute Erklärung gefunden:
http://www.java-forum.org/java-faq-beitraege/16968-hashfunktionen-java-messagedigest.html

Hier mal ne kurze Zusammenfassung von mir:

Java:
    public static void hashtest() {
        try {
            //Holen einer MessageDigest Instanz
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            
            //soll einfach ein String in einen Hash umgewandelt werden, sollte 
            //diese digest() Methode verwendet werden
            byte[] digest2 = md.digest("abd".getBytes());
            //Ausgabe des Byte Array
            for ( byte b : digest2 )
              System.out.printf( "%02x", b );
            
            System.out.println();
            
            //update kann genutzt werden, wenn man mehrere Teil(strings) hashen möchte
            //zb. wenn mehrere Eingaben hintereinander eingelesen werden und nur ein Hash erzeugt werden soll
            md.update("abd".getBytes());
            //digest() liefert die den eigentlich Hash
            byte[] digest = md.digest();
            //Ausgabe des Byte Array
            for ( byte b : digest )
              System.out.printf( "%02x", b );

           //Hashwert einem String zuweisen
           System.out.printf();
           String x = "";
            for ( byte b : digest )
                x += String.format( "%02x", b );
            System.out.println(x);

            System.out.println("__");
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(Testing_class.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

Eine Frage hätte ich allerdings noch.
Ich kenne diese Art der for Schleife nicht und verstehe nicht so ganz, wie genau die Ausgabe zustande kommt.

Das hier ist ja noch ersichtlich. Es wird einfach jedes Element von digest durchgegangen
Java:
for ( byte b : digest )

Aber was genau macht das denn hier??
Java:
System.out.printf( "%02x", b );
 
Zuletzt bearbeitet:
Man ist das kompliziert!

Verstehe ich das richtig?
digest() liefert nur Zahlenwerte, die dann noch mit diesem format Befehl in Hexadezimalschreibweise umgewandelt werden müssen?

Was ist denn jetzt der eigentlich SHA Hashwert??
Das was digest() mir liefert, oder die Hexadezimalschreibweise davon?
 
ähm, das ist ja jetzt nicht so ganz die Antwort auf meine Frage 🙂
und md5sum kenne ich nicht.
 
> Die menschenleserliche Interpretation des byte-Arrays
Warum sollte man nen Hash "menschenleserlicher" machen?
Verstehe den Sinn dahinter immer noch nicht.

Aber vielleicht zurück zum Ausgangspunkt:
Wie speichere ich jetzt Passwörter als Hash ab? Was ist der Best Practise?
Nehme ich dazu einfach das Ergebnis, welches ich von der digest() methode bekomme?
Das umwandeln in Hex Schreibweise bietet doch keinen weiteren Sicherheitsaspekt oder?

Gruß
oetzi
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben