Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]hasło generowanie
Forum PHP.pl > Forum > Przedszkole
dave666
Witam czy ktoś mógłby mi wytłumaczyć w jaki sposób jest tu pobierane hasło

  1. $prawie = md5($_POST['pass']);
  2. $pass = md5($prawie.'1m&3S');
  3. if ($old[0] == $pass) {
  4. $_SESSION['admin'] = 'ok';
  5. } else {
  6. echo"<center><font color='red'>Niepoprawne haslo sproboj ponownie</font>";
  7. }


chce się dowiedzieć co ta linijka robi
  1. $pass = md5($prawie.'1m&3S');
dublinka
To po kropce to tzw "sól" dodaje sie to do zwiekszenia bezpieczenstwa choc juz dawno md5() przestalo byc bezpieczne i powinno sie stosowac chocby password_hash().
Sól to tylko tobie znany coag znakow. Mozna dodac to np na poczatku lub koncu hasla.
dave666
Czyli najpierw jest generowane hasło w md5 a później jest dodawana ta sól i jeszcze raz generowana i jest właściwe hasło ?

Jedak nie czy możesz mi to wytłumaczyć ? będę wdzięczny


trochę pokombinowałem i nie wiem czy dobrze myślę

  1. <?php
  2. $has = "1234";
  3. $prawie = md5($has);
  4. $pass = md5($prawie.'1m&3S');
  5. echo $pass;


Czyli najpierw $has jest zamieniany na md5 to po kropce zamieniane tez na md5 i dopiero łączone czy źle rozumiem
viking
Nie. Do pierwotnego ciągu coś doklejasz. Natomiast jeszcze raz. Md5 od dawna się nie używa i nie ma sensu się przy tym upierać. Użyj co najmniej bcrypt.
dublinka
Cytat(dave666 @ 14.07.2019, 14:36:41 ) *
Czyli najpierw jest generowane hasło w md5 a później jest dodawana ta sól i jeszcze raz generowana i jest właściwe hasło ?

Jedak nie czy możesz mi to wytłumaczyć ? będę wdzięczny


trochę pokombinowałem i nie wiem czy dobrze myślę

  1. <?php
  2. $has = "1234";
  3. $prawie = md5($has);
  4. $pass = md5($prawie.'1m&3S');
  5. echo $pass;


Czyli najpierw $has jest zamieniany na md5 to po kropce zamieniane tez na md5 i dopiero łączone czy źle rozumiem

W tamtym przykladzie (w tym tez) jest przekombinowane bo 2x haslo jest mieszane.
Najpierw haslo jest mieszane a potem znowu mieszane ( to juz zamieszane za pierwszym razem) z solą.


Możesz zrobić np tak:

  1. <?php
  2. $logins = array(
  3. 'user' => array('hash' => 'ae092...', 'salt' => 'a7#(ad~I$...'),
  4. );
  5.  
  6.  
  7. $user = strtolower(trim($_POST['user']));
  8. $pass = $_POST['password'];
  9.  
  10. if(isset($logins[$user]) && crypt($logins[$user]['salt'].$pass, 'SHA-256') == $logins[$user]['hash']) {
  11. // login poprawny
  12. } else {
  13.  
  14. exit('blad');
  15.  
  16. }
  17.  
Pyton_000
Nie używamy crypt() do haseł tylko password_hash()
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.