Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z fkcja sha1() w mysqlu
Forum PHP.pl > Forum > Przedszkole
swoosh
Chodzi mi o fkcje sha1() generujaca pseudolosowy ciag na podstawie podanego stringu. Dzialam w konsoli mysql i pisze:

select SHA1('moje_haslo');

i nie dziala. Dlaczego?

Dziekuje i pozdrawiam smile.gif
FiDO
NuLL: to jest jak najbardziej prawidlowy select, sprawdz winksmiley.jpg

swoosh: co znaczy nie dziala? wydaje mi sie, ze troszke zle cos przeczytales. Nie wiem skad wziales informacje, ze SHA1 zwraca pseudolosowy ciag.. to jest funkcja hashujaca, wiec zwraca hash dla podanego parametru. Dla takiego samego parametru zawsze bedzie taki sam hash.
swoosh
Dzieki za wsparcie smile.gif

No wiem co to jest i do czego sluzy. A skad wg mnie to powinno dzialac ? No bo w mysqlu mozna cos takiego zrobic:
select "jeden plus jeden = ", 2;

i to dziala, czyli mozna wrzucac po selectcie jakos wyrazenie i ono powinno nam obliczyc je i wyrzucic. Dlatego myslalem, ze to co napisalem powinno dzialac. Czyli powinno wyrzucic ten 40 znakowy wynik (napisalem pseudolosowy, bo ciezko znalezc w tym wyniku jakas regule jego tworzenia).

No ale to nie dziala.
FiDO
Ale co masz na mysli piszac, ze nie dziala? Nic nie wyswietla? Wyswietla blad ? Cos innego ? Napisz cos wiecej (wersja mysql mile widziana), bo ciezko pomoc w ciemno.
Tymbardziej, ze to co napisales jest jak najbardziej poprawne i musi dzialac (nawet sie upewnilem przed chwila).
Co do reguly tworzenia SHA1 to tak ma byc, zeby ciag byl mozliwie rozny nawet dla podobnych danych wejsciowych. Poczytaj sobie teorie funkcji hashujacych (po naszemu nazywa sie to funkcja skrótu).

edit:
SHA1 jest od mysql'a 4.0.2, strzelam wiec ze masz starsza i dlatego Ci nie dziala.
swoosh
To fragment z dokumentacji mysqla:

SHA1(str), SHA(str)

Calculates an SHA1 160-bit checksum for the string, as described in RFC 3174 (Secure Hash Algorithm). The value is returned as a string of 40 hex digits, or NULL if the argument was NULL. One of the possible uses for this function is as a hash key. You can also use it as a cryptographically safe function for storing passwords.

mysql> SELECT SHA1('abc');
-> 'a9993e364706816aba3e25717850c26c9cd0d89d'

SHA1() can be considered a cryptographically more secure equivalent of MD5(). SHA() is synonymous with SHA1().

A wiec powinno dzialac. U mnie wywala blad:
Something is wrong in your syntax obok '('ABC')' w linii 1

uzywam Krasnal pod XP
wersja mysqla to 3.23.58


---------------------------
No to lipa. Co polecasz w takim przypadku? Zmienic wersje mysqla (nie mam pojecia jak mialbym sie za to zabrac, jesli chcialbym dalej uzywac krasnala i nie przesiadac sie na linuxa),

czy moze uzywac starszych odpowiednikow tych fkcji, np PASSWORD czy MD5 ?
FiDO
Cytat
No to lipa. Co polecasz w takim przypadku? Zmienic wersje mysqla (nie mam pojecia jak mialbym sie za to zabrac, jesli chcialbym dalej uzywac krasnala i nie przesiadac sie na linuxa)

Zmiana wersji mysql'a nie wiaze sie przeciez z linuxem. Nie znam krasnala, bo go nigdy na oczy nie widzialem, ale prawdopodobnie nie bedzie trudna podmiana samego mysql'a. Ja zawsze jak robie update to sciagam ze strony mysqla zip'a (nie instalator), ktorego tylko rozpakowuje do katalogu obecnego mysql'a i to starcza (pomijajac tylko katalog data, bo jesli jego tez wypakujesz to zresetuja sie wszelkie hasla do baz itp.). Tylko narazie sugeruje nie ruszac wersji 4.1.x tylko zabrac sie za 4.0.x, gdyz 4.1 wymaga troche wiecej czasu, bo trzeba wiecej rzeczy dostosowac i mozesz sie zrazic. 4.0 o ile pamietam nie wymagala niczego poza wypakowaniem i nadpisaniem poprzedniej (w niedziele wieczorem bede mogl to potwierdzic jak bede przy swoim kompie).
Jest tez prostszy scenariusz. Widze, że ze strony Krasnala mozna sciagnac MySQL 4.1.7 jako paczka do Krasnala, wiec byc moze tak bedzie latwiej.

Cytat
czy moze uzywac starszych odpowiednikow tych fkcji, np PASSWORD czy MD5 ?

Przede wszystkim.. to nie sa odpowiedniki tej funkcji. Aczkolwiek funkcje te maja cechy wspolne, bo wszystkie generuja jakis hash (tylko ze kazda wg swojego algorytmu). Uzywanie PASSWORD w aplikacjach jest odradzane przez tworcow bazy, o czym mozna przeczytac w manualu (jest ona jakby zarezerwowana na potrzeby wewnetrzne). Zostaje MD5, ktory jest troche slabszym hashem, aczkolwiek nie jest z nim jeszcze tak zle i mozna go uzywac, chociaz do hashowania hasel jednak wolalbym SHA, bedzie bezpieczniej.
Pozatym napisz moze do czego tego w ogole uzywasz, do hashowania hasel przechowywanych w bazie czy czego innego ?
swoosh
Cytat
Pozatym napisz moze do czego tego w ogole uzywasz, do hashowania hasel przechowywanych w bazie czy czego innego ?


Wlasnie klepie prosty system logowania na moja stronke i potrzebuje wlasnie przechowac jedno haslo. Podejrzalem wlasnie wersje na naszym uczelnianym serwerze i mamy 4.0.024, wiec nie powinno byc tam problemow. Poki co sprobuje zainstalowac ta paczke o ktorej pisales.

Aha, jeszcze apropos haszowania - generalnie sie orientuje co to jest i do czego sluzy, przeczytalemw Cormenie smile.gif

-------------------------

Sciagnalem te paczki ze strony Krasnala:
KPHP 5.0.4
MySQL 4.1.7
Zianstalowalem i wszystko dziala jak nalezy. Nawet wczesniej jak przelaczalem na php5 to mi wywalalo jakies bledy przy odpalaniu serwera(choc pozniej niby dzialalo), a teraz wszystko ladnie smyra.

Dziekuje i 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.