Passwort entschlüsseln

OnDemand

Top Contributor
Hallo zusammen,

kennt sich hier jemand mit Passwortencryption aus? Folgender Hintergrund: ich habe mit Joomla eine Website und Webshop und möchte, dass sich der User in meiner Software mit den Joomla-Logins einloggen kann.

Soweit ich das ergooglen konnte, wird das Password mit MD5 und gesalzen. dazwischen ein Punk als Tenner. Nun habe ich aber null Plan, wie ich das vom USer eingegebene PW mit dem aus der Joomla DB vergleichen kann. Kann mir hier jemand helfen?

BTW; Woher kommt das *Salt* in der Verschlüsselung, kommt das wirklich vom salzen, also etwas hinzutun? :D

Edit: Joomla 3 nutzt bcrypt, nicht MD5
 
Zuletzt bearbeitet:

fLooojava

Bekanntes Mitglied
BTW; Woher kommt das *Salt* in der Verschlüsselung, kommt das wirklich vom salzen, also etwas hinzutun? :D

Ja, das stimmt. Beispielsweise in php hast du eine beliebige Zeichenkette ( $salt = "irgendwas"; ) die dann einfach zum Passwort hinzugefügt wird und anschließend verschlüsselt wird. Damit erhöhst du die Entropie -> somit auch die Sicherheit.
 
Zuletzt bearbeitet:

OnDemand

Top Contributor
Hab jetzt mal etwas rumprobiert.. das will nicht funktionieren. Ich kann nicht mal den gespeicherten Hash splitten. Kommt immer Arrayindexout of Bounce..ist doch aber korrekt hier oder:
Java:
String storedPassword = result.getString("password");
		System.out.println(storedPassword);
		String [] hash = storedPassword.split(".");
		System.out.println(hash[1]);
 

cafebabe

Mitglied
Ohje ohje, ohne dir zu nahe tretten zu wollen, aber wenns schon um (Webshop = vertraulich) Daten geht, solltest das viell jemand machen, der sich mit sowas ein bisschen auskennt... (oder du arbeitest dich da erst mal ein wenig tiefer ein ;-) )


BTW; Woher kommt das *Salt* in der Verschlüsselung, kommt das wirklich vom salzen, also etwas hinzutun? :D

Ähm jein, also ne Mühle brauchst du keine, aber "hinzutun" musst du schon was...

Erster treffer bei google: https://de.wikipedia.org/wiki/Salt_%28Kryptologie%29

Kurze Zusammenfassung:
Krypto. Hash-Funktion : Einwegfunktion, sprich Hash(message) = hashvalue (einfach zu brechnen)
Umkehrung also hashvalue zu message (praktisch) nicht machbar

Prinzipieller ablauf:
HashValue = Hash(Passwort + Salt) [Passwort geheim , Salt beliebiger Wert, muss nicht geheim bleiben]

Zwei (gehashte passwörter vergleichen:

HashValue_1 = Hash(Passwort_1 + Salt_1)
HashValue_2 = Hash(Passwort_2 + Salt_2)

Wenn HashValue_1 == HashValue_2 dann sind Passwort_1 und Passwort_2 mit an sicherheit grenzender Wahrscheinlichkeit gleich...
 

OnDemand

Top Contributor
Hi..Ja das ist mir mittlerweile klar. Mir geht es darum, wie ich den korrekten hash bekomme. Welche bililothek etc. Der Joomla hash fängt mit $2y$ an ist das nun bcrypt md5 oder was ganz anderes? Kann nicht mal den hash splitten, warum auch immer. Muss was mit der Kodierung zu tun haben
 

Ruzmanz

Top Contributor
"." steht in Regex für ein beliebiges Zeichen. Wenn du dannach splittest kann nichts gescheites bei rauskommen.

  • Google: "joomla password encryption"
  • php - joomla password encryption - Stack Overflow
  • Dort steht:
    From the joomla source file libraries/joomla/crypt/password/simple.php there are multiple ways they get stored, and some do not have a ':' character.
  • Schauen wir in die Datei, dann finden wir tatsächlich sowas wie $2y$. Das scheint also deine Verschlüsslung zu sein.
  • In weiteren 20 Sekunden wissen wir, dass '$2y$' BLOWFISH ist.
  • D.h. dein Hash entsteht durch:
    PHP:
    			case JCryptPassword::BLOWFISH:
    				return crypt($password, $salt);
  • crypt scheint eine Methode von PHP zu sein ... PHP: crypt - Manual
  • Dort wird BLOWFISH mit Salt erklärt.
 

OnDemand

Top Contributor
Hi Ruzmanz, danke dir. Nun hab ich herausbekommen, dass Blowish in Java bCrypt ist. Hmm komischerweise funktioniert es nicht wie erhofft...

Passwörter stimmen nicht überein:

Java:
while (result.next()) {
		// Hash a password for the first time
		//String hashed = BCrypt.hashpw(passwordPlain, BCrypt.gensalt());
		 
		// gensalt's log_rounds parameter determines the complexity
		// the work factor is 2**log_rounds, and the default is 10
		String hashed = BCrypt.hashpw("meinPasswort", BCrypt.gensalt(10));
		 System.out.println("hashed: "+hashed);
		 System.out.println("database"+result.getString("password"));
		// Check that an unencrypted password matches one that has
		// previously been hashed
		if (BCrypt.checkpw(result.getString("password"), hashed))
		System.out.println("It matches");
		else 
		System.out.println("It does not match");
	    }

Mein Hash mit der Methode beginnt mit einem $2a$...

Die ausgegebenen Haschwerte müssen ja auch die selben Strings sein oder?

Also wenn das PW stimmt, wären ja beide $2y$10xxxxx
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Die ausgegebenen Haschwerte müssen ja auch die selben Strings sein oder?

Das mit dem Hash und Salt hast du wahrscheinlich immer noch nicht ganz verstanden. Du nimmst ein Passwort und schickt es in eine Ein-Weg-Verschlüsslung. Anschließen änderst du 1-2 Werte mit einer konstanten Funktion und konstanten Parametern. Das Resultat wird in der DB abgelegt. Um zu prüfen, ob beim Login das Passwort stimmt, musst du die selbe Prozedur wiederholen und vergleichst anschließen die Resultate. Aus diesem Grund muss der Hashwert übereinstimmen. Was anderes kannst du gar nicht prüfen.

$2a$ und $2y$ sind verschiedene Implementierungen. Das geht aus der PHP-Doku hervor.
Zudem kannst du nicht einfach BCrypt.gensalt(10) nutzen. Du brauchst den selben Salt, welche Joomla dir generiert.

Du vertraust grade aktuell purem Glück und hoffst, dass nach X-Stunden das richtige Resultat erzielt wird. Bau dir eine simple PHP Seite, welche dir in einen Hash umwandelt:

<?php
$password = "test";
$salt = "????????????????????????????";
echo crypt($password, $salt);
?>

Wenn du damit nicht den richtigen Hash ermitteln kannst, kannst du es in Java auch nicht.
 

OnDemand

Top Contributor
Das mit dem Salt hab ich schon verstanden, wolle nur nochmal bestätigt haben, dass die Hashstrings übereinstimmen müssen.
BCrypt.gensalt(10) ist der Default-Wert, welcher auch in Joomla genutzt wird (10 log-rounds heißt es da). Die PHP Seite bringt mich nicht weiter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Passwort Versuche speichern Allgemeine Java-Themen 8
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
J Passwort Manager Allgemeine Java-Themen 15
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
F Best Practice Passwort Recovery - Schulbeispiel Allgemeine Java-Themen 4
D Passwort verschlüsseln - Wo Allgemeine Java-Themen 2
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
O verschlüsseltes Passwort ablegen Allgemeine Java-Themen 12
G Unix Passwort mit Java ändern? Allgemeine Java-Themen 3
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
W Passwort Clientseitig sicher ablegen ohne Hash Allgemeine Java-Themen 2
DStrohma Passwort in Datei speichern - wie? Allgemeine Java-Themen 31
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
R Windows - User Passwort ändern Allgemeine Java-Themen 2
B "Verschlüsselung" mit Passwort (XOR bzw. Modulo) Allgemeine Java-Themen 7
S Erstellung einer verschlüsselten Passwort Datei Allgemeine Java-Themen 11
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
J TrueZip - Passwort bei Zipfile Allgemeine Java-Themen 13
I Passwort verschlüsseln Allgemeine Java-Themen 22
padde479 zip mit Passwort Allgemeine Java-Themen 2
H root-Passwort übergeben Allgemeine Java-Themen 28
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
C Passwort sicher speichern Allgemeine Java-Themen 5
P Passwort lokal speichern Allgemeine Java-Themen 5
F Passwort hash Allgemeine Java-Themen 8
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
J Passwort(String) ---> SecretKey(Spec) Allgemeine Java-Themen 6
T jxl Passwort Allgemeine Java-Themen 3
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
E TextField/Passwort Allgemeine Java-Themen 5
F Java Passwort abfrage Allgemeine Java-Themen 2
D sicheres hardgecodetes passwort? Allgemeine Java-Themen 18
G Zip Datei - Passwort schützen Allgemeine Java-Themen 13
R Ver/entschlüsseln von dateien Allgemeine Java-Themen 16
E Entschlüsseln einer Datei die mit DEC verschlüsselt wurde Allgemeine Java-Themen 2
T Datei beim schreiben verschlüsseln beim lesen entschlüsseln Allgemeine Java-Themen 11
B In Java verschlüsseln - mit C# entschlüsseln Allgemeine Java-Themen 7
Zed Exception entschlüsseln Allgemeine Java-Themen 6
S Verschlüsselte Mails entschlüsseln! Allgemeine Java-Themen 2
N Byte-Code entschlüsseln (Bitmasks?) Allgemeine Java-Themen 3
D gewisse Zeichen sind nach dem entschlüsseln anders Allgemeine Java-Themen 2
P HMACMD5- Verschlüsselung entschlüsseln Allgemeine Java-Themen 2
C Ver/Entschlüsseln von Strings Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben