Toon posts:

Mysql Password()

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een inlogsysteem hebben waarbij de wachtwoorden encrypted opgeslagen worden in de database en waarbij ik ze er ook weer eenvoudig uit kan halen.

Nu weet ik dat Mysql een PASSWORD() functie heeft en die werkt goed, als ik doe:
INSERT INTO Medewerker(medWachtwoord) VALUES(PASSWORD(geheim)); dan gaat dit goed en krijg ik een encrypt wachtwoord.

Probleem is alleen hoe haal ik dit uit de database.
Als ik doe SELECT PASSWORD(medWachtwoord) as Wachtwoord FROM Medewerker dan krijg ik de encrypte gegevens te zien en dat wil ik nou net niet.

Iemand een idee, ik heb de search al gebruikt maar kon hierop geen antwoord vinden.

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Password is een one-way encryptie. Je kunt een password dan niet decoderen, en dus gaat jou trucje niet werken.
Als je een password kan decoderen, waarom zou je 'm dan uberhaupt coderen?

[ Voor 26% gewijzigd door kvdveer op 10-02-2003 12:57 ]

Localhost, sweet localhost


  • whoami
  • Registratie: December 2000
  • Laatst online: 24-08 16:37
Waarom zou je willen zien wat het gedecodeerde paswoord is?

Als je wilt checken of het ingegeven password correct is voor de opgegeven username, dan encodeer je dat ingegeven paswoord toch gewoon en vergelijk je de 2 ge-encodeerde paswoorden gewoon?

AFAIK gebeurt het ook in Unix op die manier.

https://fgheysels.github.io/


Verwijderd

Topicstarter
uhm ik wil hem coderen zodat je hem niet kunt lezen als je de database met phpmyadmin bekijkt, het hoeft niet een hele goede encryptie methode te zijn.

Maar oke bedankt voor het antwoord dan hoef ik ook niet verder te zoeken, een idee voor een eenvoudige encryptie manier die ook altijd weer te decoden is??

Verwijderd

Topicstarter
en ik wil hem kunnen bekijken zodat ik hem terug kan sturen naar gebruikers als ze hun wachtwoord vergeten zijn.

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Je moet het wachtwoord dat je mederwerker invoerd ook encrypten en dan vergelijken met het encrypted wachtwoord uit de db.

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 10:42
met base64_encode en base64 decode zou je simpele encryptie kunnen toevoegen

Icons are overrated


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 10 February 2003 @ 13:00:
Maar oke bedankt voor het antwoord dan hoef ik ook niet verder te zoeken, een idee voor een eenvoudige encryptie manier die ook altijd weer te decoden is??

encrypt / decrypt

Maar ik zou het gewoon one-way houden en voor gebruikers die de boel vergeten zijn een nieuw PW bakken en dat opsturen, ipv proberen het oude te achterhalen.
Helmet schreef op 10 February 2003 @ 13:02:
met base64_encode en base64 decode zou je simpele encryptie kunnen toevoegen
Dat je dat encryptie durft te noemen :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je kunt de EN- en DECRYPT of EN- en DECODE functies gebruiken. Zie http://www.mysql.com/doc/...us_functions.html#IDX1322.

Maar eerlijk gezegd zou ik de voorkeur geven aan een nieuw password genereren als mensen hem vergeten zijn.

Wanneer je dan de wachtwoorden wilt controleren kun je dat gewoon middels een PASSWORD() call in de WHERE clause van je query doen:
code:
1
2
3
4
5
6
7
SELECT 
   # meuk
FROM
   # tables
WHERE
   `user_table`.`encrypted_field`
     = PASSWORD('dit_heeft_de_gebruiker_ingevuld')

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 21-08 21:12
en ik wil hem kunnen bekijken zodat ik hem terug kan sturen naar gebruikers als ze hun wachtwoord vergeten zijn.
Niet doen.

Gewoon een nieuw random password genereren van zeg 16 tekens, en die stuur je naar de betreffende persoon.
Die kan daar dan mee inloggen en zelf zijn password weer veranderen.


This posting is provided "AS IS" with no warranties, and confers no rights.


  • gomaster
  • Registratie: Februari 2002
  • Laatst online: 20-08 13:33
en voor de encryptie gebruik je gewoon md5. Makkelijk en one way.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

gomaster:
en voor de encryptie gebruik je gewoon md5. Makkelijk en one way.
Mja, ik zie niet in waarom je liever md5 dan PASSWORD zou gebruiken eigenlijk...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

gomaster schreef op 10 February 2003 @ 13:25:
en voor de encryptie gebruik je gewoon md5. Makkelijk en one way.
En waarom is md5 beter dan password? of is dat loze "ik gebruik altijd md5" uitspraak?

Localhost, sweet localhost


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Wat doet "password"? Als je dat nergens kunt vinden zou ik ook liever md5 gebruiken, daar ken je in ieder geval de eigenschappen van. Ik ken ze nl niet van password.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Hmm, nu zie ik in de manual het volgende staan:
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:
code:
1
2
mysql> SELECT PASSWORD('badpwd');
        -> '7f84554057dd964b'

PASSWORD() encryption is non-reversible. PASSWORD() does not perform password encryption in the same way that Unix passwords are encrypted. See ENCRYPT(). 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.
Waarom je het niet zelf zou gebruiken wordt niet verder toegelicht. Heeft iemand daar een logische verklaring voor?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Osiris
  • Registratie: Januari 2000
  • Niet online
drm schreef op 10 February 2003 @ 14:58:
Hmm, nu zie ik in de manual het volgende staan:

[...]


Waarom je het niet zelf zou gebruiken wordt niet verder toegelicht. Heeft iemand daar een logische verklaring voor?
Geen idee, maar wat ik wel weet, is dat ik de php-functie MD5 gebruik en verder niet de MySQL-functie...

Wat als je nu de username wilt checken dan? Call me a n00b, maar ik doe dat in PHP met md5(); en niet met if (password($ww) == $row["ww"]) oid... (maar dus wel met md5() ;) )...

Als password() in PHP wel bestaat dan heb ik nix gezegt, okay? ;) Maar ik gebruik gewoon altijd md5, omdat ik die php-functie nou eenmaal ken...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Mja, da's niet bepaald een argument, want je kunt ook gewoon de MD5() functie van MySQL gebruiken ;)
code:
1
2
3
4
5
6
7
mysql> SELECT MD5('Waarom niet gewoon MD5 () van MySQL gebruiken?') `md5`;
+----------------------------------+
| md5                              |
+----------------------------------+
| 4f5297818a2b89e0d5d4204eb33dfac5 |
+----------------------------------+
1 row in set (0.00 sec)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
drm schreef op 10 February 2003 @ 17:22:
Mja, da's niet bepaald een argument, want je kunt ook gewoon de MD5() functie van MySQL gebruiken ;)
Argument om MD5 of SHA-1 te gebruiken? Wat dacht je ervan dat deze algoritmes door wiskundigen zijn aangetoond als 'veilig' en de password() algo van MySQL niet?
Waarom kiezen ze eigenlijk niet voor SHA-1 authenticatie voor MySQL vraag ik me eigenlijk af....

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Waarom kiezen ze eigenlijk niet voor SHA-1 authenticatie voor MySQL vraag ik me eigenlijk af....
dat vraag ik mij dus ook af ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • MisterData
  • Registratie: September 2001
  • Laatst online: 10:08
www.php.net/md5 is hetzeflfde.... gewoon zo doen dus:
PHP:
1
2
3
4
5
6
if(md5($given_password)==$db_password) {
echo "valid";
}
else {
echo "invalid";
}

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

drm schreef op 10 February 2003 @ 14:58:
Waarom je het niet zelf zou gebruiken wordt niet verder toegelicht. Heeft iemand daar een logische verklaring voor?

Dan houden ze zich het recht voor het algortime te wijzigen, zonder dat je er last van zou moeten hebben :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier


Als je het dan toch in php doet, kijk dan ook naar www.php.net/crypt (en dan de variant met een lange salt), die is weer wat minder makkelijk te bruteforcen dan md5.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dan houden ze zich het recht voor het algortime te wijzigen, zonder dat je er last van zou moeten hebben :)
Fair enough.. :)
www.php.net/md5 is hetzeflfde.... gewoon zo doen dus: [snip]
:? Waarom, oh waarom, zou je dan niet gewoon de MD5 () functie van MySQL gebruiken? Dat is net zoiets raars als een unix-timestamp in mysql opslaan en er vervolgens met php een leesbare datum van maken... Ik begrijp dat echt niet, leg mij het uit :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Osiris
  • Registratie: Januari 2000
  • Niet online
drm schreef op 10 February 2003 @ 22:04:
[...]

:? Waarom, oh waarom, zou je dan niet gewoon de MD5 () functie van MySQL gebruiken? Dat is net zoiets raars als een unix-timestamp in mysql opslaan en er vervolgens met php een leesbare datum van maken... Ik begrijp dat echt niet, leg mij het uit :)
Omdat je het encrypted password in PHP met het ingevoerde (nog niet encrypted en nog te encrypten met md5()) password wil vergelijken en daarna iets doen? :? Of doe je soms een WHERE `password` = MD5($invoer) oid?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Of doe je soms een WHERE `password` = MD5($invoer) oid?
Ja, dat lijkt mij wel.
code:
1
2
3
4
5
6
7
8
SELECT
   # meuk
FROM
   `users`
WHERE
   `user_name`='$username'
AND
   `password`=MD5('$password')
zeg maar. Als dat geen resultaat heeft is de login ongeldig. As easy as that. En het onderscheid tussen "De user is onbekend" en "Het wachtwoord is niet juist" maak ik persoonlijk liever niet, daarmee geef je alleen maar meer informatie over je de users weg.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Osiris
  • Registratie: Januari 2000
  • Niet online
drm schreef op 11 February 2003 @ 08:58:
[...]

Ja, dat lijkt mij wel.
code:
1
2
3
4
5
6
7
8
SELECT
   # meuk
FROM
   `users`
WHERE
   `user_name`='$username'
AND
   `password`=MD5('$password')
zeg maar. Als dat geen resultaat heeft is de login ongeldig. As easy as that. En het onderscheid tussen "De user is onbekend" en "Het wachtwoord is niet juist" maak ik persoonlijk liever niet, daarmee geef je alleen maar meer informatie over je de users weg.
Hmz, en ik altijd maar de password uit de DB halen en die in PHP checken... Moet dit dan ook maar es gaan doen 8)

En ik geef ook maar 1 'error' trug hoor... "User onbekend of password onjuist" ofzo en niet apart :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

drm schreef op 10 februari 2003 @ 22:04:
:? Waarom, oh waarom, zou je dan niet gewoon de MD5 () functie van MySQL gebruiken? Dat is net zoiets raars als een unix-timestamp in mysql opslaan en er vervolgens met php een leesbare datum van maken... Ik begrijp dat echt niet, leg mij het uit :)

Ach, een reden zou kunnen zijn dat je wilt voorkomen dat het in eventuele query-logs verschijnt ;)

Maar de tijd ombouwen buiten mysql is wel niet altijd handig, ja :)
Pagina: 1