Zdravím,
přes tento bezpečnostní problém má podle mě MD5 stále své místo v mnoha aplikacích. Třeba klasická session ID, která se používá na webu a je tvořena např.
md5('432fdsfsd' + client_ip + 'fsd42rgf')
je naprosto v pohodě, zde nalezení shody nepomůže. Anebo se pletu? Ptám se proto, až se klienti či šéf začnou ptát, jestli nepoužíváme tu nebezpečnou MD5...
Jak jsem psal, mam dojem, ze kdyz ti nekdo vezme jen MD5, tak si s ni moc nepomuze. Kdyz ti ukradne originalni data, tak je schopny k ni vytvorit jina data se stejnou MD5 (ale musi ti ty data predat). Takze kdyz by mel originalni retezec, tak si k nemu muze vytvorit jiny se stejnou MD5. Ve tvym pripade by musel tedy vygenerovat nejakou prvni a posledni cast, k tomu pridat svoje IPcko a pak by mozna mohl dostat stejnou MD5. Jenze tu zdrojovou zpravu generujes ty na zaklade IP adresy, takze utocnik by to mohl ovlivnit jenom tou IP adresou a s tim by asi moc nezmohl.
To je prave kvuli te kontrole IP adresy, aby nemohl session nekdo ukrast. Proto se v aplikaci pocita MD5 z ip adresy (obalene nejakym balastem) a porovna se to s tim, co prislo od klienta.
A kde chces sehnat nahodny retezec ? md5 je jako generator pseudonahodnych cisel mnohem lepsi nez rand() ... pravda, md5("owejiowe".client_ip."werwer".rand()) by byla nahodna jeste lepe.
Panove, jako problemek je to zajimave, ale z tehle kusych informaci nejsem schopen vam nic kloudneho rici. Bud to chce popsat tady, ale asi v jinem vlaknu, nebo si to vyridit mailama mimo a pak sem dat vysledek. V kazdem pripade je potreba tu situaci trochu vic popsat a formulovat problem. Vetsinou se vyresi tim, kdyz clovek sepisuje, oc vlastne jde...