Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Krotki hash
propage
post 3.03.2010, 08:16:34
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


Jest funkcja, która tworzy hasuje, jednak has jest duzo krotszy niz z funkcji md5 czy sh1 ?
Potrzebuje funkcji, ktora bedzie tworzyc id na podstawie unikalnej nazwy, mysle, iż 5 literowe id w calkowicie wystarczy przy bardzo malej bazie danych
Go to the top of the page
+Quote Post
skowron-line
post 3.03.2010, 09:06:30
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Przecież możesz sobie obciąć do 5 znaków
  1. substr(0, 5, md5('skowron-line'));


A druga sprawa jest taka że jak będziesz miał w bazie klucz główny i auto_increment na polu id to wystarczy żeby były unikalne wartości.

Ten post edytował skowron-line 3.03.2010, 09:07:32


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
propage
post 3.03.2010, 09:55:21
Post #3





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


No włąsnie, chciałem tak zrobić, bez konieczności dawnia, "unikalnych wartości" w tabeli, tak aby ta funkcja juz mi zwracala unikalne wartości.
Go to the top of the page
+Quote Post
Blame
post 3.03.2010, 10:15:02
Post #4





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


To może tak:
  1. substr(0, 5, md5(microtime()));


--------------------
Go to the top of the page
+Quote Post
VegetaSSJ
post 3.03.2010, 13:36:19
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/959957/php-short-hash
Go to the top of the page
+Quote Post
PiotrekM
post 3.03.2010, 14:10:12
Post #6





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

Ostrzeżenie: (0%)
-----


Cytat(skowron-line @ 3.03.2010, 09:06:30 ) *
Przecież możesz sobie obciąć do 5 znaków
  1. substr(0, 5, md5('skowron-line'));

pierwszy argument to string, czyli:
  1. substr(md5('skowron-line'), 0, 5);


edit:
dziwne, ale z microtime te pierwsze 8 cyfr powtórzyło mi się 85 razy w pętli do 1000, ba... tylko jedna wartość mi się powtórzyła. dziwne.
w kolejnej pętli zero powtórzeń smile.gif
teoretycznie czasami może się zdarzyć powtórzenie smile.gif

Ten post edytował PiotrekM 3.03.2010, 14:27:19
Go to the top of the page
+Quote Post
skowron-line
post 3.03.2010, 14:31:41
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


@PiotrekM dzięku za poprawkę.
A co do powtórzonych wartości to jest tak bo md5 jest słabym algorytmem hashującym, polecam sha256 w phpie funkcja się nazywa hash i jako parametr podaje się algorytm i string.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
mls
post 3.03.2010, 15:09:02
Post #8





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(PiotrekM @ 3.03.2010, 14:10:12 ) *
dziwne, ale z microtime te pierwsze 8 cyfr powtórzyło mi się 85 razy w pętli do 1000, ba... tylko jedna wartość mi się powtórzyła. dziwne.
w kolejnej pętli zero powtórzeń smile.gif
teoretycznie czasami może się zdarzyć powtórzenie smile.gif


Dziwne, że nie spojrzałeś co konkretnie robi funkcja microtime. Może wtedy nie dziwiłbyś się dlaczego zwracała przez jakiś czas takie same dane...
Do losowych liczb wymyślono chociażby uniqid, którego to możesz podstawić zamiast microtime...


--------------------
Go to the top of the page
+Quote Post
PiotrekM
post 4.03.2010, 08:31:48
Post #9





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

Ostrzeżenie: (0%)
-----


Cytat(mls @ 3.03.2010, 15:09:02 ) *
Dziwne, że nie spojrzałeś co konkretnie robi funkcja microtime. Może wtedy nie dziwiłbyś się dlaczego zwracała przez jakiś czas takie same dane...
Do losowych liczb wymyślono chociażby uniqid, którego to możesz podstawić zamiast microtime...

masz racje, ale microtime zwraca czas z dużą dokładnością, więc myślałem, że się nie powtórzy.

Ten post edytował PiotrekM 4.03.2010, 08:42:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 14:19