Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php vs. shadow
Forum PHP.pl > Forum > PHP
b2n
Witam spotkałem się już z podobnym tematem ale niestety odpowiedz nie jest odpowiednia wiec rozpoczynam nowy.

Jak wszyscy wiemy linuxy trzymają hasła w etc/shadow

i to hasło powiedzmy wyglada tak $1$N7XDgeOE$p6j5AUXgXkB01.Y2CvaSX. to jest "bardzotrudnehaslo"

i teraz jak uzyskac taki sam ciąg znaków za pośrednictwem php uzywanie funkcji

crypt('bardzotrudnehaslo')

zwraca za kazdym razem co innego a wiadomo ze tak nie moze byc...

Bardzo prosze o pomoc bo jakos pomysły mi się skończyły :-(
donpablo
jak wiesz unixy uzywają do kodowania algorytmu md5, w php jest ku temu stosowna funkcja : md5(), oczywiście jest to kodowanie jednostronne
rogrog
crypt zwraca za każdym razem co innego bo używa losowego ciągu salt. Do tego crypt nie jest przenośne - może zwracać różne wartości na różnych serwerach bo korzysta z takiego hashowania jakie jest akurat dostępne
b2n
może inaczej

Jaka funkcja php zwraca wynik taki sam jak szyfrowane hasło w etc/shadow ?

albo jakie parametry podac ? do md5

md5
243e61e9410a9f577d2d662c67025ee9

etc/shadow
$1$N7XDgeOE$p6j5AUXgXkB01.Y2CvaSX.
donpablo
md5() wymaga tylko jednego parametru tj. jakiegoś ciągu znaków które mają byc kodowane:
$haslo = "tralala";
$wynik = md5($haslo);

a tak apropo, hasło zakodowane w md5() nie da się rozkodować, no chyba że zastosujesz łamacz kodów i policzysz na cud, linux koduje hasło w md5(), ale żeby uzyskać taki sam ciąg znaków należy znac hasło zanim nie zostanie zakodowane
Wave
Cytat
zwraca za kazdym razem co innego a wiadomo ze tak nie moze byc...

Niby czemu? Jak nie podasz salta to będzie za każdym razem inne.
Przykład na weryfikacje hasła:
  1. <?php
  2. $password = crypt('mypassword'); 
  3.  
  4. if (crypt($user_input, $password) == $password) {
  5.    echo &#092;"Password verified!\";
  6. }
  7. ?>

I poczytaj dobrze: http://pl2.php.net/crypt
http://4programmers.net/article.php?id=403
Liko
Wiem, że Wam się nie chce szukać, ale to naprawdę nie boli: http://forum.php.pl/index.php?showtopic=27626.

  1. <?php
  2. // Author: thorhajo at gmail dot com
  3. // Z komentarzy manuala php.
  4. function shadow($password)
  5. {
  6. $hash = '';
  7. for($i=0;$i<8;$i++)
  8. {
  9.  $j = mt_rand(0,53);
  10.  if($j<26)$hash .= chr(rand(65,90));
  11.  else if($j<52)$hash .= chr(rand(97,122));
  12.  else if($j<53)$hash .= '.';
  13.  else $hash .= '/';
  14. }
  15. return crypt($password,'$1$'.$hash.'$');
  16. }
  17. ?>
Wave
Liko ta funkcja (ściągnięta z manuala) tworzy tylko hasz i to zawsze inny więc trudno mówić o porównaniu haszowanych haseł. :]
b2n
Kurcze nie bardzo rozumiem

Liko a uruchomiles ta funkcje ? jak napisalem w pierwszym POSCIE szukałem wiec nie pisz ze nie...

Wave hmmm juz nie pamietam ale chyba to juz probowałem...

przeglądnołem manuala przeglądałem forum i jakoś nie znalazłem...


;-)
---
ps.
znalazłem coś takiego
http://limonez.net/~jure/php/md5crypt.phps

zakłądam że tak

$1$ << stałe

N7XDgeOE << klucz ?

p6j5AUXgXkB01.Y2CvaSX. <<to wypadało by hasło

ale niestety zwraca mi
$1$
N7XDgeOE$
V90af4lOC6q4rmrTpoakV1
Wave
Jeżeli jest tak jak mówisz to:
  1. <?php
  2. if(crypt('bardzotrudnehaslo', 'N7XDgeOE') == V90af4lOC6q4rmrTpoakV1)
  3. echo(&#092;"Haslo prawidlowe\");
  4. ?>


Ale wątpie. Wcześniej podałem link do rozwiązania w C.
b2n
wIEC TAK jakby komuś było potrzbne

$1$ - to metoda
to po $1$<klucz>$ - to ziarno szyfrowania

$1$<klucz>$<haslo> - zaszyfrowane haslo

man crypt 3

pozostaje tylko losowe generowanie <klucz> i potem crypt ;-)

Pozdrawiam i dziekuje za odpowiedzi

ps. sprawdzilismy i działa w ten sposób przynajmniej mi biggrin.gif
AxZx
a podaj teraz gotowy konkrety kod php smile.gif
z gory dzieki
b2n
Więc tak najpierw to:

http://limonez.net/~jure/php/md5crypt.phps


  1. <?
  2. require(&#092;"md5crypt.php\");
  3.  
  4. $haslo = 'bardzotrudnehaslo'; // nasze haslo
  5. $nowez = substr(md5(uniqid(rand(), true)), 0, 8); //unikalny klucz
  6. md5crypt($haslo,$nowez); //wynik;-)
  7.  
  8. ?>


dziala przy postfix na mysqlu wiec zakładam że w innnych także zadziala ;-)

czyli hasla generuje prawidlowo biggrin.gif

pozdrawiam
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.