Verschlüsselung erkennen

Lil-rich

Erfahrenes Mitglied
#1
Hash-Verfahren erkennen

Hallo Leute,

ich habe eine knifflige Frage:
Ich habe einen Ausgangswert und seinen dazugehörigen verschlüsselten Ausgabewert. (Eigentlich nicht nur einen, sondern beliebig viele).

Nur den Schlüssel, den habe ich nicht. Gibt es irgendeine Möglicht den herauszufinden?

Prinzipiell sieht es so aus:
Ausgangswort -> Schlüssel(-methode) -> Ausgabewert

1 und 3 kann ich jeweils beschaffen, sprich ich kann für jeden beliebigen Ausgangswert den entsprechenden Ausgabewert "beschaffen". Nur wie kann ich jetzt durch die Übereinstimmungen rausfinden, wie verschlüsselt wurde? Geht das überhaupt?

Vielen Dank schonmal...

P.S.: Hintergrund: Ich hab ein Programm, das bei einer Art Registrierung ein beliebiges Passwort wählt, es einmalig anzeigt und dann verschlüsselt (mit einer unbekannten Methode) in der Datenbank speichert. Dieses Passwort will ich in ein von mir gewähltes Passwort ändern -> Dazu muss ich mein Wunschpasswort ja erstmal verschlüsseln :) Das Programm selbst bietet dazu leider keine Funktion an...
 
Zuletzt bearbeitet:

RudolfG

Erfahrenes Mitglied
#2
P.S.: Hintergrund: Ich hab ein Programm, das bei einer Art Registrierung ein beliebiges Passwort wählt, es einmalig anzeigt und dann verschlüsselt (mit einer unbekannten Methode) in der Datenbank speichert. Dieses Passwort will ich in ein von mir gewähltes Passwort ändern -> Dazu muss ich mein Wunschpasswort ja erstmal verschlüsseln :) Das Programm selbst bietet dazu leider keine Funktion an...
Hi,

also in diesem Fall, hast du wirklich sehr schlechte Karten, wenn der Hersteller dir nicht sagt wie/welche Prüfsumme er berechnet (MD5, SHA1 etc.).

In der Regel ist der so, dass Programme von einem Passwort eine Hash-Prüfsumme errechnen, diese, die theoretisch nicht umkehrbar ist (heißt ist nicht zurückrechenbar!) Prüfsumme wird in der Datenbank abgelegt. Wenn du jetzt im Login-Fenster dein Passwort eingibst wird von diesem auch die Prüfsumme berechnet, diese beiden Prüfsummen werden dann mit einander verglichen. (Die Passwörter sind nicht verschlüsselt, sondern nur ihre Prüfsummen liegen in der DB!)

Da hier zwei identische Passwörter auch eine identische Prüfsumme ergeben würden und man diese mit vorgefertigte Rainbow-Tabellen vergleichen kann und somit sagen kann welches Passwort dieser Hash sein müsste, gibt es die "erweiterung" den Salted-Hash. Hierbei wird an das Password um bestimmte Werte ergänzt (die geheim/zufällig sind/bleiben) und dann gehasht. Damit kann man auch mit den Rainbow-Tabellen keine Vergleiche machen.

Es besteht somit auch nicht für den Admin ein Chance das Passwort herrauszufinden/zu sehen (was aus Datenschutzgründen auch so sein muss!). Hier kann/muss der admin das Passwort löschen und vom Programm eine neue Prüfsumme ablegen lassen.

Gruß
RudolfG
 

Neurodeamon

Erfahrenes Mitglied
#4
Mit mehr Informationen könnte man vielleicht auch helfen - zumindest mehr als mit vagen Beschreibungen.
Wenn das Programm nicht zu komplex ist arbeitet es wie viele Registrierungsysteme mit einem simplen MD5 Hash (ohne Salt). Man kann eine Verschlüsselung zwar nicht per se erkennen, aber man kann Schlüsse aus z. B. der Länge ziehen (md5 - 32 Zeichen, crc32 - 8 Zeichen, sha-1 - 40 Zeichen).
 

Lil-rich

Erfahrenes Mitglied
#6
Mit mehr Informationen könnte man vielleicht auch helfen - zumindest mehr als mit vagen Beschreibungen.
Wenn das Programm nicht zu komplex ist arbeitet es wie viele Registrierungsysteme mit einem simplen MD5 Hash (ohne Salt). Man kann eine Verschlüsselung zwar nicht per se erkennen, aber man kann Schlüsse aus z. B. der Länge ziehen (md5 - 32 Zeichen, crc32 - 8 Zeichen, sha-1 - 40 Zeichen).
Beispiel:
Sj9kkJcA würde als Hash folgendes ergeben: QUUXSAus22q/QiSkuAKYt1pAXbQ=

Also 28 Stellen wenn ich mich nicht verzählt hab :D

Aber bitte erst noch den Titel ändern. Es geht hier wie gesagt nicht um Verschlüsselung, sondern um Hashverfahren (die man nicht entschlüsseln kann). Danke!
Geändert... Aber bitte nochmal genau lesen, es geht nicht ums Entschlüsseln, sondern ums Gegenteil, ich will einen String verschlüsseln, weiß nur nicht mit welchem Algorythmus!
 

Lil-rich

Erfahrenes Mitglied
#8
Ok, vielen Dank schonmal.

Ich hab mal ein wenig gegoogelt und hab versucht mich ein wenig reinzulesen, aber für mich als Neuling in Hash-Verfahren ist das nicht so ganz einfach ^^
Gehe ich richtig in der Annahme, dass ich mit folgendem Code das richtige Ergebnis erhalten würde?
PHP:
<?php
$str = 'Dies ist ein zu kodierender String';
echo base64_encode(sha1($str));
?>
Wenn nicht, hast du vllt. einen Link/ein Tutorial parat durch das ich mich durchwurschteln könnte? (Vorzugsweise Deutsch+PHP, notfalls nehm ich aber natürlich auch andere Hilfen gerne an ;) )



Edit: Ok, scheint nicht ganz zu stimmen :(

String: Sj9kkJcA
Output: NDE0NTE3NDgwYmFjZGI2YWJmNDIyNGE0YjgwMjk4Yjc1YTQwNWRiNA==

Edit2: Nach erneutem intensiven Googeln kommt mir die Vermutung, dass ich den/die/das "Digest" brauche (steht ja auch in deinem Post -> /me erst denken :-( )
Nur wie genau kriege ich diesen Wert? Ich kann bei Google leider nichts ordentliches finden...
 
Zuletzt bearbeitet:

Lil-rich

Erfahrenes Mitglied
#10
Danke, klappt einwandfrei!

Ich hatte die Hoffnung schon aufgegeben, bis heute eine neue Antwort da war :)

Danke dir & den anderen natürlich auch :)

/Erledigt
 

Neurodeamon

Erfahrenes Mitglied
#11
Jupps, ich hab kein Beispiel angegeben, weil Du nicht angegeben hattest in welcher Sprache Du das brauchst.
 

Lil-rich

Erfahrenes Mitglied
#12
"Learning by doing" und" try and error" sind eh nützlicher :)

Ich mag es meist sogar selbst machen, weil man einfach mehr lernt dabei. Aber trotzdem danke, gibt nicht so viele, die gleich Beispiele anfügen würden ;)
 

Neue Beiträge