por
pobrecito hablador
el Lunes, 22 Agosto de 2005, 21:33h
(#576882)
A cada hash le corresponden infinitas soluciones. Por eso es un hash, reduce el infinito a 128 bits, y por tanto hay infinitas colisiones. Pero por tener un hash desconocido determinado no vas a encontrar la solución facilmente, ese es el fundamento por el que se usan. Son funciones criptográficamente seguras, fáciles de calcular en un sentido, y difíciles en el otro. Aunque tanto md5 sha1 y otros tengan ya formas de ataque serias.
Pero claro, si tienes 12*10^6 puntos de un espacio de 3.4*10^38 la fracción que tienes es 12*10^6/2^128=1/3.5*10^32, asi que sólo tienes que probar unas pocas decenas de tera-yotta veces para encontrar tu colisión, si es que la hay.
Una base de datos de 12*10^6 hashes se genera muy fácilmente y con poco esfuerzo a partir de un diccionario, que es como se ha construido esa base de datos. Si una palabra no esta en el diccionario que la ha generado -por los motivos que sea-, es altamente improbable que haya una colisión con una de las que sí están.
Re:Hablando con fundamento...
(Puntos:1, Inspirado)Pero claro, si tienes 12*10^6 puntos de un espacio de 3.4*10^38 la fracción que tienes es 12*10^6/2^128=1/3.5*10^32, asi que sólo tienes que probar unas pocas decenas de tera-yotta veces para encontrar tu colisión, si es que la hay.
Una base de datos de 12*10^6 hashes se genera muy fácilmente y con poco esfuerzo a partir de un diccionario, que es como se ha construido esa base de datos. Si una palabra no esta en el diccionario que la ha generado -por los motivos que sea-, es altamente improbable que haya una colisión con una de las que sí están.