Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Dziwne zachowanie się funkcji ENCRYPT()
Forum PHP.pl > Forum > Bazy danych > MySQL
lorak110786
Mam tabele z zapisanymi historycznymi haszami haseł dla użytkowników (tak aby uniemożliwić ustawienie tego samego hasła po wymuszonej zmianie). Hasze są generowane funkcją crypt() w skrypcie php. Załóżmy ze jakaś osoba miała hasło 'qwer1234'.

Gdy wykonuje takie zapytanie
  1. SELECT oh_id, oh_data FROM osoba_historia WHERE oh_osoba=1037 AND oh_haslo=ENCRYPT('qwer1234', oh_haslo)

dostaję w wyniku rekord w którym było użyte to hasło

Jednak co ciekawe, gdy wpiszę takie zapytanie:
  1. SELECT oh_id, oh_data FROM osoba_historia WHERE oh_osoba=1037 AND oh_haslo=ENCRYPT('qwer1234ABC', oh_haslo)

również dostanę w wyniku ten rekord. Dla czego? Wszak podałem zupełnie inne (z punktu widzenia programu) hasło. Takie same jest tylko 8 pierwszych liter, a mimo to wychodzi na to że hasło jest takie samo. O co tu chodzi?

DODANE:
Tak sobie testuje i zauważyłem że funkcja ENCRYPT korzysta tak jakby z pierwszych ośmiu znaków hasła. Czemu tak się dzieje?
Mchl
http://dev.mysql.com/doc/refman/5.1/en/enc...unction_encrypt

Cytat
ENCRYPT() ignores all but the first eight characters of str, at least on some systems. This behavior is determined by the implementation of the underlying crypt() system call.
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.