Avatar billede mik789 Nybegynder
12. juni 2007 - 10:30 Der er 11 kommentarer og
1 løsning

problem med PASSWORD()

Jeg har flg.:

INSERT INTO users (u_name, pwd) VALUES ('ABC', PASSWORD('xyz'));

og:

SELECT COUNT (*) FROM users WHERE pwd = PASSWORD('xyz');

Jeg får resultatet 0. Hvorfor det?
Avatar billede michael_stim Ekspert
12. juni 2007 - 10:32 #1
Pröv med:
SELECT PASSWORD('xyz');
Avatar billede michael_stim Ekspert
12. juni 2007 - 10:34 #2
Ved ikke om denne går, har ikke arbejdet med mysql egen kryptering:
SELECT COUNT(PASSWORD('xyz')) FROM users;
Avatar billede mik789 Nybegynder
12. juni 2007 - 13:35 #3
har fået det til at virke. problemet var at jeg havde begrænset pwd feltet til de 8 karakterer brugeren må indtaste, og altså ikke taget højde for at PASSWORD() genererer strenge med mange flere karakterer.

micael stim> tak for velviljen. læg et svar, du får 15 point for din gode vilje.
Avatar billede michael_stim Ekspert
12. juni 2007 - 13:45 #4
Ellers tak, samler ikke på point.
Avatar billede pidgeot Nybegynder
12. juni 2007 - 14:08 #5
Lige et lille råd: Det frarådes KRAFTIGT at man benytter PASSWORD() til egen brug, da implementationen af den kan skifte fra version til version. Det er bedre at benytte en anden hashing funktion, såsom MD5() eller SHA1() (eller måske en af krypteringsfunktionerne, se http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html).

Dette er SÆRDELES vigtigt hvis du ikke kører på MySQL 4.1 eller senere, da den funktion blev ændret i forhold til 4.0, og din kode derfor fejler når du opgraderer.
Avatar billede mik789 Nybegynder
13. juni 2007 - 17:46 #6
pidgeot> tak for tippet. betyder det at de to andre metoder du nævner, er "sikre", dvs. kompatible?
Avatar billede mik789 Nybegynder
13. juni 2007 - 17:52 #7
pidgeot> tjekkede lige dit link. Der står:

Note: The PASSWORD() function is used by the authentication system in MySQL Server; you should not use it in your own applications.

Jeg bruger det på to måder: 1) jeg går ind på min phpadmin og udfører en insert i mysql; 2 jeg henter password data via en select fra php. Sker selve krypteringen ikke netop i MySql serveren i begge disse tilfælde? Hvad vil det ellers sige at den bruges på mysql serveren, som teksten siger? Jeg er ikke prof, så du må bære over med manglende basisviden.
Avatar billede pidgeot Nybegynder
13. juni 2007 - 18:10 #8
Teksten siger at det benyttes til *login-systemet* i MySQL-serveren - det er en stor forskel.

Det er nemlig ikke et spørgsmål om *hvor* hashingen foregår, men om hvad den hashede værdi bliver benyttet til. Lige så snart det ikke er til at oprette/ændre en bruger til selve databasen (her snakker vi ikke om en bruger på din side, men en bruger der kan gå ind med phpMyAdmin og rode direkte i databasen), er det i din egen applikation, og ved at gøre dig selv afhængig af implementationen af PASSWORD, har du essentielt gjort det umuligt for dig at opgradere MySQL (fordi en opgradering kan ændre implementationen af PASSWORD, og dermed gøre det umuligt at logge ind).

Det kunne man til nød overkomme hvis det så bare var en kryptering - så kunne det jo bare de-krypteres og re-krypteres - men da det er en hash, er den pr. definition en-vejs, og du kan ikke konvertere de gamle kodeord efter den nye hashing-algoritme.

MD5 og SHA1 er velkendte hashing-algoritmer der følger bestemte standarder, og derfor kan du uden problemer bruge disse i stedet - du kan sågar foretage hashingen direkte i din PHP-kode.
Avatar billede mik789 Nybegynder
13. juni 2007 - 18:21 #9
fint, tak. det vil jeg gøre.
Avatar billede mik789 Nybegynder
13. juni 2007 - 18:51 #10
har nu opdateret min kode til sha1 - alt fungerer perfekt, tak for tippet igen. giver gerne point hvis du lægger et svar
Avatar billede pidgeot Nybegynder
13. juni 2007 - 18:53 #11
Værsgo :)
Avatar billede htx98i17 Professor
18. april 2010 - 20:40 #12
og jeg takker både mik789 og pidgeot. Det løste også mit problem :)
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
Computerworld tilbyder specialiserede kurser i database-management

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