2012-07-18 14 views
8

Próbuję skonfigurować system logowania, ale nie mogę rozwiązać jednego problemu: PHP daje mi inne wyjście z md5(); niż MySQL ...PHP md5() daje inne wyjście niż MySQL md5

na przykład w PHP:

$password = md5("brickmasterj"); 
return $password; 

Powroty:

3aa7b18f304e2e2a088cfd197351cfa8 

Ale równoważne MySQL daje mi krótszą wersję:

3aa7b18f304e2e2a08 

Jaka jest problem? I jak mam z tym pracować podczas sprawdzania haseł?

+0

Czy włożenie/aktualizacji lub wybierając wyjście MD5 w MySQL? Mam wrażenie, że to zależy od twojej kolumny, która ma szerokość/rozmiar tylko 18 znaków. – Gavin

Odpowiedz

8

Chyba problem w długości kolumny tabeli, należy ustawić długość pola hasła do co najmniej 32

+0

w prawo, widać, że wartość z mysql jest początkiem wygenerowanego przez PHP ciągu, a także ma 18 znaków :) – mishu

+0

Dzięki, że to był problem, maksymalna długość kolumny była maksymalna. – Jers

2

Nie sposób MySQL zwraca go o długości < 32. Jeśli chcesz zrobić proste zapytanie lubię SELECT md5('brickmasterj'), zobaczyłbyś. Teraz najprawdopodobniej wstawiasz wartość do kolumny, która nie jest wystarczająco szeroka.

2

Czy Twoje pole z bazą danych ma 32 znaki? Czy piszesz w bazie danych używając md5 mysql?

+0

Dzięki, że to był problem, nie było maksymalnej długości kolumny => -1 .... przy okazji dzięki! jesteś taki pro. – kinaesthesia

0

Wielkość skrótu, jeśli zawsze jest ustalona. W twoim przypadku rozmiar skrótu wynosi 128 bitów. Po przekonwertowaniu na ciąg ascii będzie to 32-znakowy ciąg zawierający tylko cyfry szesnastkowe. więc jeśli przechowywania zmienny charakter długość powinna być conajmniej 32 przykład: password varchar(32) powinien iść w tabeli mysql następnie można wywołać za pomocą php przy użyciu select password from table where password =md5($password);