Dziwne zachowanie md5();

0

Witam
Próbuję napisać prosty serwis w którym informacje o użytkownikach są przechowywane w bazie. Proces rejestracji przebiega prawidłowo, natomiast przy próbie logowania otrzymuję dziwne wyniki. Rejestrując użytkownika jego hasło przepuszczam przez funkcję md5() i wszystko jest ok. Ale przy próbie logowania, podawane w formularzu hasło również po przepuszczeniu przez md5() generuje całkiem inna wartość hasha. W obu przypadkach zmienna wysyłana do md5() jest tak samo pobierana z formularza poprzez $_POST. Gdzie szukać błędu. Czy różnica w ilości pól formularza może mieć tutaj znaczenie?

Pozdrawiam

0

Wielkość znaków w MD5 na znaczenie, może zawieruszyło ci się coś jeszcze, albo nie tą zmienną hashowałeś? Pokaż kod.

0

a jak z kodowaniem stoisz? W obu skryptach te same?

0

fragment z pliku logowania:

$uzytkownik = $_POST['username']; //pobiera nazwe uzytkownika
$haslo = $_POST['passwd']; //pobiera haslo
...
$hash = md5($haslo);
$zapytanie = "select * from profil where login='$uzytkownik' AND haslo='$hash'";

i z pliku rejestracji użytkownika:

$uzytkownik = $_POST['username']; //pobiera nazwe uzytkownika
$haslo = $_POST['passwd']; //pobiera haslo
$mail = $_POST['mail_addr']; //pobiera adres mailowy
$data = $_POST['date']; //pobiera date urodzenia
$plec = $_POST['sex']; //pobiera plec
$imie = $_POST['name']; //pobiera imie
$nazwisko = $_POST['sec_name']; //pobiera nazwisko
....
$password = md5($haslo);
	$zapytanie = "insert into profil (login, haslo, mail) values ('$uzytkownik', '$password', '$mail')";
	$zapytanie2 = "insert into uzytkownik (imie, nazwisko, data_urodz, plec) values ('$imie', '$nazwisko', '$data', '$plec')";
	$wynik = mysql_query($zapytanie);
	$wynik2 = mysql_query($zapytanie2);

Czy zastosowane kodowanie w bazie (chyba nieznacznie różniące się od ustawionego w przeglądarce) ma znaczenie, raczej nie powinno mieć, przecież hash zawiera tylko znaki łacińskie. Brakuje mi pomysłów.

0

Wychodzą dwa różne hashe? Podaj jakieś przykładowe hasło które wpisujesz i parę haszy które generuje, będzie wiadomo w którym jest błąd.

0

Przykładowe hasło "aaa" - wygenerowany hash (zapisany w bazie) "47bce5c74f589f4867dbd57e9",
podaję to samo hasło do logowania, otrzymuję hash: "47bce5c74f589f4867dbd57e9ca9f808"

Wygląda na to, że cała wartość hasła zwiększyła się o końcowe "ca9f808"

1

To nie dziwne zachowanie md5 tylko źle zaprojektowana tabela w bazie danych. Wygląda na to, że pole haslo przyjmuje tylko 25 znaków, czyli o 7 mniej niż ma hash md5. Ktoś (Ty) robiąc tabelę ustalił dla haslo varchar(25) - a tam powinno być 32.

0

Dzięki za pomoc. Teraz wygląda na to, że działa. Drobny błąd, a tyle zachodu:).

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1