Avatar billede mjall0w Nybegynder
23. marts 2004 - 19:17 Der er 21 kommentarer og
2 løsninger

Kryptering og login

Hej..

Jeg har et login som jeg meget gerne vil have krypteret, men når jeg prøver at logge ind med dette script skriver den forkert brugernavn og password.. Men hvis jeg fjerner md5 virker det fint nok, nogle der kan hjælpe ??


$postbruger = md5($brugernavn);
$postpass = md5($password);
       
       
        $resultat = mysql_query("SELECT * FROM `crew` WHERE nick = '$postbruger' AND password = '$postpass'");
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 19:28 #1
Det lyder som om du har passwords og brugernavne liggende i databasen, som ikke er krypterede, og når du så kommer med de krypterede udgaver, så kan databasen selvfølgelig ikke finde nogen tupler, der matcher... :o)
Avatar billede mjall0w Nybegynder
23. marts 2004 - 19:33 #2
ja det har du helt ret i, det skal de måske være :) ?
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 19:36 #3
Jeps! MySQL kan ikke dekryptere en md5-hash. Så vidt jeg husker er det en envejsfunktion, dvs. den ikke kan dekrypteres overhovedet ;o)
Avatar billede fangel Nybegynder
23. marts 2004 - 19:37 #4
Ja, det skal ligge krypteret i databasen...

PS, pænt dumt at kryptere brugernavne...

Morten
Avatar billede fangel Nybegynder
23. marts 2004 - 19:38 #5
rasmusbg -> ja, det er korrekt - MD5 er en checksum, dvs at den ikke kryptere men derimod laver en hash... dette vil sige at den samme tekst altid vil give den samme hash - men der er også ændre tekster der giver samme hash, og derved give dig adgang...

Morten
Avatar billede mjall0w Nybegynder
23. marts 2004 - 19:54 #6
okay, tak.. Men så siger vi at jeg ikke ændrer brugernavn.. Men hvis man skal ændre password, så skal man vel udskrive den med value=md5($pass) istedet for value=$pass
???
Avatar billede fangel Nybegynder
23. marts 2004 - 20:00 #7
tror ikke du har fanget pointen...

i databasen ligger det krypterede password (dette er en 32bit hexadecimal streng) - når en person skal tjekkes kryptere du det indtastede password og ser om de to krypterede passwords er ens - det giver ingen mening af sætte en value=[en md5 sum] da det bare er en 32bit streng...

Morten
Avatar billede mjall0w Nybegynder
23. marts 2004 - 20:37 #8
Jo nu har jeg fattet pointen.. Altså man skal tjekke om det krypterede password han lige har skrevet er det samme som det inde i databasen, ikke ??
Avatar billede mjall0w Nybegynder
23. marts 2004 - 20:37 #9
altså han skriver password i et textfield som så bliver krypteret og samlignes med det krypterede inde i min mysql database
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 20:39 #10
Jeps! Lige præcist :o) Men som dea_pg skriver, så er md5 ikke den bedste løsning, pga. flere forskellige strenge kan give det samme "resultat"
Avatar billede fangel Nybegynder
23. marts 2004 - 21:22 #11
rasmusbg -> tjaa - det vil jo altid være tilfældet når du bruger "hash" - så derfor bruger fx jeg stadig MD5 til mine systemer (er Freelance PHP Programør)

Der er trods alt kun 32^16 mulighedder for forskellige hashes...

Morten
Avatar billede fangel Nybegynder
23. marts 2004 - 21:22 #12
hov - lidt sort sætning den sidste...

Der er 32^16 forskellige mulige hash's - så chancen for at 2 ord har den samme hash er PÆNT lille...

Morten
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 21:24 #13
Dea > Tjoh det er da rigtig...hehe :o)
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 21:27 #14
Dea > Hvorfor ikke bruge MySQL's funktion password() i stedet for at lave en md5-hashing?
Det skal lige siges, jeg ikke aner hvad password() præcist gør ved tekststrengen... ;o)
Avatar billede fangel Nybegynder
23. marts 2004 - 21:35 #15
rasmusbg -> tjoo - læs: http://www.mysql.com/doc/en/Encryption_functions.html

---
PASSWORD(str)
OLD_PASSWORD(str)
    Calculates a password string from the plaintext password str. This
    is the function that is used for encrypting MySQL passwords for
    storage in the Password column of the user grant table:

mysql> SELECT PASSWORD('badpwd');
        -> '7f84554057dd964b'

    PASSWORD() encryption is irreversible. PASSWORD() does not perform
    password encryption in the same way that Unix passwords are encrypted.
    See ENCRYPT(). Note: The PASSWORD() function is used by the
    authentication system in MySQL Server, you should NOT use it in your
    own applications. For that purpose, use MD5() or SHA1() instead. Also
    see RFC-2195 for more information about handling passwords and
    authentication securely in your application.
---

Uddrag: "You should NOT use it in your own applications."

Desuden så ville jeg ikke bruger i databasen, for sæt man udskiftede den på et tidspunkt...

Morten
Avatar billede rasmusbg Nybegynder
23. marts 2004 - 21:39 #16
Dea > Okay. Det havde jeg ikke set i dokumentationen. Men det er bare sjovt så, at det bliver brugt i Horde... ;o)
Avatar billede mjall0w Nybegynder
23. marts 2004 - 22:37 #17
i skal have tusind tak for hjælpen.. Men jeg tænker stadig på at hvis en bruger skal kunne rette på sit password, kan man så godt få det skrevet ud i rigtigt format, så hvis pass er "pass" så det ikke er en hash's når man skal rette på det ?? håber i forstår hva jeg mener :)
Avatar billede fangel Nybegynder
23. marts 2004 - 22:39 #18
du kan IKKE få det tilbage til tekst når først det er krypteret !!! derfor, lad feltet være blankt, og hvis det stadig er det ved submit så lad være at ændre det, ellers så overskriv det gamle password med md5-summen af det nye...

Morten
Avatar billede mjall0w Nybegynder
23. marts 2004 - 22:43 #19
Okay, så det er ikke muligt at få det skrevet tilbage til teskt.. Man må nok sige jeg er blevet meget klogere i dag :)
Avatar billede fangel Nybegynder
23. marts 2004 - 22:46 #20
det er det vi her for...
Avatar billede fangel Nybegynder
23. marts 2004 - 22:46 #21
du får lige et svar, så du kan få lukket spørgsmålet (hvis du da er tilfreds)
Avatar billede mjall0w Nybegynder
25. marts 2004 - 07:51 #22
jo men det er jeg da :)
men kan du ikke edele pointene med rasmusbg ??
Avatar billede rasmusbg Nybegynder
25. marts 2004 - 07:54 #23
Så må jeg da hellere også smide et svar :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester