Dziwne zachowanie md5();

Odpowiedz Nowy wątek
2011-02-19 12:40
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

Pozostało 580 znaków

2011-02-19 13:38
0

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


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-02-19 13:45
spier
0

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

Pozostało 580 znaków

2011-02-19 13:54
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.

edytowany 2x, ostatnio: Adam Boduch, 2011-02-21 09:06

Pozostało 580 znaków

2011-02-19 14:32
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.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-02-19 14:36
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"

Pozostało 580 znaków

2011-02-19 14:48
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.


Pozostało 580 znaków

2011-02-19 15:00
0

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

Pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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