Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablice tęczowe
Forum PHP.pl > Forum > PHP
lord_t
Na forum parę razy pojawia się pojęcie tablic tęczowych. Definicja na wikipedii nie mówi mi zbyt wiele; stąd też moje pytanie:
(1a)Czy tablica tęczowa np. md5 to zbiór ciągów znakowych, takich że hash md5 z tego ciągu odpowiada przynajmniej jednemu hashowi ciągu nie zawartego w tablicy tęczowej?

A po polsku:
(1b)Zakładamy, że mdX('alfa')=mdX('beta')='q2we' i mdX('xx')=mdX('dd')=mdX('hh')='aafa' oraz że to wszystkie hashe dla mdX. Czy tablica tęczowa hasha mdX wygląda np. tak:
'alfa':'q2we',
'xx':'aafa'

? (Czyli, że zawiera tylko po jednym słowie dla każdej wartości hasha.)
sowiq
Tablice tęczowe są tworzone w ten sposób, że jakiś ludek/skrypt wpisuje hasło, serwer generuje sobie na jego podstawie mdX i zapisuje do bazy. Czyli tak jak napisałeś, fraza -> hash. Frazy są unikalne, hash'e nie.

Jak wiesz, może się zdarzyć, że dwie frazy mają taki sam hash, ale tego typu strony (przynajmniej najpopularniejsze) zwracają po jednym wyniku, czyli tak na prawdę pierwszy zwrócony przez bazę danych.

Tak mi sie przynajmniej wydaje i na to wskazuje zdrowy rozsądek.

Nie mniej jednak znaleźć dwie frazy o takich samych hash'ach nie jest łatwo. Możesz zatem powiedzieć dlaczego o to pytasz? smile.gif

[edit]
Hmm, ale z drugiej strony bardziej wydajnym byłoby założyć w bazie danych klucz na pole z hash'em. Więc tak na prawdę zależy to od osoby piszącej stronkę smile.gif
lord_t
W przypadku znalezienia tego samego hasha nie ma sensu dodawać kolejnego ciągu do bazy, skoro i tak ten drugi daje ten sam hash. Wydaje mi się też, że po zakończeniu procesu generacji tablicy tęczowej hashe są zbędne, więc tablica tęczowa będzie po prostu zawierać same ciągi znaków.
Ponadto treści tych ciągów są raczej bez znaczenia, bo z tego co wiem tablic tęczowych używa się do łamania np. md5, więc komuś nie zalezy na przekształceniu hasha acf43fe54* w ciąg, a na znalezieniu ciągu który da hash acf43fe54*.

Nie utożsamiałbym tablic tęczowych ze stronami typu http://md5.rednoize.com/, które posiadają bazę ciągów i odpowiadających im hashy, bo to wg mnie nie tablice tęczowe.


*) byle jaki przykład:)

___

Pytam o to wszystko, bo wydaje mi się, że w końcu zrozumiałem czym są te tablice tęczowe;]
sowiq
Cytat
z tego co wiem tablic tęczowych używa się do łamania np. md5, więc komuś nie zalezy na przekształceniu hasha acf43fe54* w ciąg, a na znalezieniu ciągu który da hash acf43fe54*.


Nie istnieje funkcja odwrotna do md5/sha1, więc nie da się przekształcić hash'a w ciąg wejściowy. Pozostaje tylko szukanie takiego ciągu, który daje taki sam hash. A wykonać to można na dwa sposoby:
1) obliczać hash każdego ciągu w bazie danych i dopasowywać do wprowadzonego. Robimy to za każdym razem kiedy wyszukujemy jakiegoś hash'a
2) trzymamy w bazie danych ciąg + hash, dzięki czemu ograniczamy się jedynie do porównań z 'łamanym' hash'em


Wikipedia też ma na to swoje zdanie: http://pl.wikipedia.org/wiki/T%C4%99czowe_tablice tylko szczerze mówiąc nie zrozumiałem środkowego akapitu smile.gif
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.