XUPWUP.NL
Login
Or create an account

Is dit een goede password hasher?

0 Posted 28 May 2011 11:17
User avatar
Rick Hendricksen
Administrator
Posts: 2251
  1. function passhash($uid, $passwd, $username){
  2. $flip = 4;
  3. $flip2 = 9;
  4. $salt1 = 'def';
  5. $salt2 = 'abc';
  6. $uid = (($uid ^ (1 << $flip)) ^ (1 << $flip2)) * ($uid >> 1);
  7. return sha1($uid .
  8. $salt1 .
  9. sha1($passwd . $salt2) .
  10. "Rick is een baas." .
  11. md5($username . $salt2) );
  12. }
1 Posted 28 May 2011 11:26
User avatar
Kebabbi
Moderator
Posts: 549
nee man je salt is altijd tzelfde (btw ik weet er helemaal niks vanaf en wsl de rest van de gebruikers ook niet)
2 Posted 28 May 2011 11:30
User avatar
Rick Hendricksen
Administrator
Posts: 2251
Dat de salt altijd hetzelfde is is toch niet erg?
Het is alleen belangrijk dat niemand het weet toch? Ik gebruik daarnaast ook nog de userid en de username, die een beetje de rol van dynamische salt overnemen.
3 Posted 28 May 2011 11:58
User avatar
Rick Hendricksen
Administrator
Posts: 2251
Versie 2
  1. function passhash($uid, $passwd, $username, $salt){
  2. $flip = 4;
  3. $flip2 = 9;
  4. $passwd = str_split($passwd, (strlen($passwd)/2)+1);
  5. $username = str_split($username, (strlen($username)/3)+1);
  6. $uid = (($uid ^ (1 << $flip)) ^ (1 << $flip2)) * ($uid >> 1);
  7. return hash('whirlpool',
  8. $passwd[0] . $uid . $salt . $username[1] .
  9. $passwd[1] . $username[0]);
  10. }
  11. function genSalt(){
  12. return uniqid(mt_rand(), true);
  13. }

even ter informatie, de oude hash function is
  1. function passhash($pass){
  2. return md5(md5($pass));
  3. }

edit: gensalt moet returnen ipv echo-en natuurlijk :)

Edited on 28 May 2011 13:10 by Rick Hendricksen.

Edited on 02 June 2011 18:45 by Rick Hendricksen.
4 Posted 28 May 2011 13:00
User avatar
Kebabbi
Moderator
Posts: 549
random salt? maar je moet 'm toch ergens kunnen reproduceren?
5 Posted 28 May 2011 13:02
User avatar
Rick Hendricksen
Administrator
Posts: 2251
Ik genereer de random salt 1 keer (en elke keer dat je je wachtwoord verandert) en dan sla ik hem op in de database, naast het wachtwoord.
Dit betekent dat je het wel kúnt brute forcen, maar dat je altijd maar 1 wachtwoord hebt per brute force poging. Dat betekent dus dat dit ge-salt er voor zorgt dat het bruteforcen van de hele database min(nUsers, 8^34) keer zo lang duurt.
Daarnaast zorgt het er voor dat het zeer onwaarschijnlijk is dat iemand een rainbow table heeft liggen die mijn salt gebruikt.

Edited on 28 May 2011 13:06 by Rick Hendricksen.

Edited on 28 May 2011 19:38 by Rick Hendricksen.
6 Posted 28 May 2011 18:52
User avatar
00T00
Global Mod.
Posts: 1048
© Rick Hendricksen