mysql password()

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_password_45198/page_1 - zur Vollversion wechseln!


XeroXs schrieb am 20.08.2002 um 03:01

hab in einer tabelle einiges mit password() eingetragen damits verschlüsselt wird, möchts aber jetzt auslesen (was ja kein problem wäre) und in eine variable speichern.. (was auch kein problem wäre)..

auslesen will ichs natürlich so, das es nachher nicht mehr verschlüsselt ist.. und leider schaff ichs einfach nicht den richtigen syntax zusammenzubekommen.. hints ?


noledge schrieb am 20.08.2002 um 07:04

how encrypted passwords work :p

der sinn hinter einem verschlüsseltem passwort ist, es NICHT MEHR entschlüsseln zu können... ich denk die password-funktion wird den md5 drüberlaufen lassen (einwegverschlüsselung, nur verschlüsseln möglich). selbes erreichst mit der php-md5-funktion. das wird bei so ziemlich allen passwörtern angewandt, vor allem in der unix welt. du gibst ein passwort ein, er verschlüsselt es und es kann nie wieder (*) entschlüsselt werden.

stellt sich die frage: wie verwend ich das jetzt? der MD5-algorithmus ist so, dass er bei gleichem string IMMER die selbe folge von zeichen erzeugt. nur ein anderes zeichen erzeugt bereits einen völlig anderen hash. folglich: du nimmst ein passwort, verschlüsselst es, speicherst es. user gibt ein passwort ein, du lässt MD5 drüberlaufen, und vergleichst die _hashes_ miteinander. beispiel: das passwort "user" erzeugt den hash "0815". ein benutzer gibt als passwort "users" ein, hash wird "4711". du vergleichst die hashes, nicht ident, falsches passwort. benutzer gibt "user" ein, du erzeugst den hash "0815", hashes sind ident, passwort korrekt. die wahrscheinlichkeit, dass jemand ein passwort eingibt, das genau den selben hash erzeugt ist sehr klein, wenn auch nicht unmöglich.

(*) entschlüsselt direkt nicht, allerdings kann mittels brute force ein passwort gefunden werden, dass den selben hash hat.

tjo, kleiner ausflug in die einwegverschlüsselung :)

edit: du vergleichst dann beispielsweise $myrow[password] (aus der datenbank) mit md5($_POST["password"]) (aus dem formular)


XeroXs schrieb am 20.08.2002 um 11:49

dacht ich mir schon... argl


XeroXs schrieb am 20.08.2002 um 11:52

ok folgendes... i hab ne tabelle wo die ganzen passwörter drinnen stehen.. weswegen ichs brauch.. i muss ein paar zeilen in an andern table kopiern.. dort wird mit md5 verschlüsselt.. jetzt is halt die frage ob das echt das selbe ist.. dann gehts sowiso..

weiß das wer genau?


funka schrieb am 20.08.2002 um 11:56

select user (oder hier true oder konstante ;)) from users where password=PASSWORD('$pass') and user='$user'

so ca verwendets man dann bei sql (glaub ich zumindest ;) - $user und $pass vorher zu checken (also addslashes() etc kann nie schaden)


XeroXs schrieb am 20.08.2002 um 11:57

des weiß i eh.. das prob is nur das des für die anwendung da ned geht..


XeroXs schrieb am 20.08.2002 um 11:59

ok grad getestet .. bei md5(bla) kommt was andres raus alls bei password(bla)

:(


funka schrieb am 20.08.2002 um 11:59

naja anwendung umbauen
oder verifizieren und dann das plaintext pass was er eingeben hat weiter verwenden


XeroXs schrieb am 20.08.2002 um 11:59

wäre kein problem.. hier gehts aber um einträge die schon vorhanden sind.. kann ned einfach alle member löschen


funka schrieb am 20.08.2002 um 12:01

wenn die eintraege mit gecrypteten passes vorhanden sind
siehe mein vorheriges pass

wenns um irgnedwelche groesseren aenderungen geht solltest das jeweilige script aufrufen sobald der user sich einlogt und sein plain text pass mal hergibt
aber denoch waer natuerlich eine umstrukturierung besser


XeroXs schrieb am 20.08.2002 um 12:02

nachmal ganz langsam ;)

i muss von einer tabelle den user verschieben in a andre.. dort wird aber anders verschlüsselt !


noledge schrieb am 20.08.2002 um 12:08

jo, russische methode - "mitsniffen". wenn sich ein user erfolgreich einloggt, speicherst das passwort entweder plaintext oder so encrypted, wie du es brauchst, wo anders ab.


funka schrieb am 20.08.2002 um 12:16

problem erklaert
problem geloest

hail to the interactivity of the al'mighty i.r.c. :P


bernhard schrieb am 20.08.2002 um 14:39

roundup: MySQL verwendet seinen eigenen, nicht sonderlich ausgefeilten[1, 2] Algorithmus. Ein patch[3] für John the Ripper[4] ist (ohne Gewähr und auf eigene Gefahr) verfügbar.

[1] <http://groups.google.com/groups?sel...p;output=gplain>
[2] <http://online.securityfocus.com/bid/1826>
[3] <http://goliath.darktech.org/code/john-mysql-v0.patch>
[4] <http://www.openwall.com/john/>


Jehul schrieb am 21.08.2002 um 14:20

du kannst ganz einfach de mysql-md5(password) funktion benutzen:
list($md5) = mysql_fetch_row(mysql_query("SELECT PASSWORD('das_passwort')"));




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026