Zum Inhalt springen

Java md5 Hash


Ionman

Empfohlene Beiträge

Hallo zusammen,

bin das erstemal dabei in Java ein Applet zu schreiben welches einen Login erfodert. Dabei hab ich in der Datenbank (MySQL) die Passwörter natürlich verschlüsselt (md5). Wenn ein Benutzer sich nun anmelden will muss ich das eingegebene pw von ihm natürlich "umwandeln" um die Hashs zu vergleichen. und genau das bringt mich zu meiner Frage.

Gibt es in Java keine Methode um einen String in einen md5 Hash umwandeln zu können, oder bin ich einfach zu doof um richtig zu googeln?

Schonmal vorab danke für die Hilfe.

Gruß

Ionman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke 2teres :D (Nicht ernst nehmen)

import java.security.*;

class MD5 {

    public static void main(String[] args) throws Exception {

        /* Berechnung */

        MessageDigest md5 = MessageDigest.getInstance("MD5");

        md5.reset();

        md5.update(args[0].getBytes());

        byte[] result = md5.digest();


        /* Ausgabe */

        StringBuffer hexString = new StringBuffer();

        for (int i=0; i<result.length; i++) {

            hexString.append(Integer.toHexString(0xFF & result[i]));

        }

        System.out.println("MD5: " + hexString.toString());

    }

}

MessageDigest (Java 2 Platform SE v1.4.2)

Nimmt halt nur Byte bzw Bytearrays entgegen und keine Strings.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum so kompliziert, wenn Du eh ein SQL Select erzeugen musst, dann kannst Du auch die Datenbank dazu verwenden den Hash zu erzeugen:

Select count(*) from mytable where username=? and userpass=md5(?)

Das ganze in ein Prepareobjekt rein und ausführen lassen. Wenn ein Resultset existiert, d.h. User und Passwort sind korrekt. Das das Resultset Null bzw enthält keine Records, dann stimmt entweder Benutzername und/oder Passwort nicht

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dank euch beiden für die Hilfe. Hab nun den von DominikJ vorgeschlagenen Weg eingeschlagen. Und nach ein paar wenigen Anpassungen Funktioniert das ganze Wunderbar.

Sodele damit begehbe ich mich mal wieder in die weiten des Internets und suche über google mal nach einem Tutorial wie man richtig Googelt.

In diesem Sinne früh vorweg ein schönes Wochenende

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok nun hab ich doch Festgestellt das es ein Problem gibt und ich steig einfach nicht dahinter.

Die Verschlüsselung wurde von md5 auf sha1 geändert. Also denk ich mir naja einfach mal anstatt

MessageDigest sha = MessageDigest.getInstance("MD5");
MessageDigest sha = MessageDigest.getInstance("SHA1");
einfügen. Der rest sollte eigentlich gleich von statten gehen. Gebe ich zu Beispiel test ein erstellt er mir jedesmal einen anderen Hash Wert sobald ich die Fenstergröße verändere. Also wenn er zuvor mit 4f20 angefangen hat kann es nach der größen Veränderung sein das es mit b5f2 losgeht. Ich kann ausschliessen das es daran liegt das die Variable welches das Passwort beinhaltet, jedesmal einen anderen Wert hat. Der Wert bleibt auch gleich bei selber Fenster Größe. Hier mal der Code:

String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname; 

conn = DriverManager.getConnection(url, user, password); 

ResultSet rs = conn.createStatement().executeQuery( "SELECT `ID` FROM `user` WHERE `Username` LIKE '"+name+"';


StringBuffer hexString = new StringBuffer();

while ( rs.next() ) {

	String id = rs.getString("ID");

	String pw = passwordeintragen.toString();

	try {

		MessageDigest sha = MessageDigest.getInstance("SHA1");

		sha.reset();

		sha.update(pw.getBytes());

		byte[] result = sha.digest();


		for (int i=0; i<result.length; i++) {

			hexString.append(Integer.toHexString(0xFF & result[i]));

		}


		fuehler.setText(hexString.toString());

	}

	catch (NoSuchAlgorithmException d) {

		fuehler.setText(d.toString());

	}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab das ganze mal 1:1 (bis auf Variable) so übernommen und habe immernoch die für mich auf jedenfall Schlechte Nachricht das es keine Veränderung gebracht hat.

Falls noch Ideen vorhanden wäre ich auf jedenfall Dankbar.

DominikJ danke dir auf jedenfall schonmal für die bissherige Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...