Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Hashowanie haseł
Forum PHP.pl > Forum > PHP
rav1989
Witam,

Napisałem sobie klasę do hashowania haseł

  1. class HashPassword{
  2. private $algo = '$2a$08$';
  3. private $seed = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. private $salt_len = 22;
  5.  
  6. private function makeSalt() {
  7. $salt = '';
  8. $seed = str_shuffle($this->seed);
  9. for ($i = 0; $i < $this->salt_len; $i++) {
  10. $salt .= substr($this->seed, rand(0, (strlen($seed)-1)), 1);
  11. }
  12. return $salt;
  13. }
  14.  
  15. public function makeHash($password) {
  16. $pass = crypt($password, $this->algo.$this->makeSalt());
  17. $length = ((strlen($pass) - strlen($this->algo))*-1);
  18. $pass = substr($pass,$length);
  19. return base64_encode($pass);
  20. }
  21.  
  22. public function verifyHash($password, $hash) {
  23. $hash = $this->algo.base64_decode($hash);
  24. return ($hash == crypt($password, $hash));
  25. }
  26. }


(seed oraz długość soli są przykładowe smile.gif)

Przykład wykorzystania:

  1. $pass = 'asdf';
  2. $hash_pass = new HashPassword();
  3.  
  4. $hash = $hash_pass->makeHash($pass);
  5. echo '<br>';
  6. echo $hash;
  7. echo '<br>';
  8. echo $hash_pass->verifyHash($pass, $hash)?'true':'false';


Jak uważacie czy hashowanie w ten sposób jest w miarę bezpieczne?

Pozdrawiam
Rav
Fifi209
To nie jest hashowanie. smile.gif
rav1989
Cytat(Fifi209 @ 28.02.2012, 18:09:55 ) *
To nie jest hashowanie. smile.gif

Wydawało mi się, że crypt jest f-cją hasującą (a jest użyta w tej klasie). Jeżeli chodzi o base64 to można tego nie stosować.
Uriziel01
Wszystko ok ale nie rozumiem po co :questionmark.gif
http://php.net/manual/en/function.hash-hmac.php
załatwia wszystko smile.gif
rav1989
Cytat(Uriziel01 @ 28.02.2012, 18:24:12 ) *
Wszystko ok ale nie rozumiem po co :questionmark.gif
http://php.net/manual/en/function.hash-hmac.php
załatwia wszystko smile.gif


Tak ale przy tej metodzie musze trzymać sól razem z hasłem w bazie. Trochę mnie ten pomysł przeraża, chociaż wiem, że dużo osób tak robi.
viking
Przejrzyj sobie: http://www.openwall.com/phpass/
rav1989
Cytat(viking @ 28.02.2012, 19:53:26 ) *


Hmm... ta klasa też korzysta z crypt. Więc wnioskuję po tym, że moja klasa jest też w miarę bezpieczna smile.gif

Dziękuję smile.gif
Fifi209
Cytat(rav1989 @ 28.02.2012, 18:19:18 ) *
Wydawało mi się, że crypt jest f-cją hasującą (a jest użyta w tej klasie). Jeżeli chodzi o base64 to można tego nie stosować.

Wybacz nie zauważyłem, skupiłem się na base64 tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.