¿A=HASH(A) hash recursivo?

Publicado por snoop, Julio 03, 2008, 12:31:35

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

snoop

Bueno, es medio raro lo que planteo, pero siempre me aparece por la cabeza esa idea:
¿ Es posible encontrar un archivo que en su contenido se encuentre el hash de ese mismo archivo ?

Por ejemplo si el archivo contiene:
AAAAAA
Que el hash de eso sea AAAAAA.

O
Por ejemplo si el archivo contiene:
BBBBAAAAAACC
Que el hash de eso sea AAAAAA.

¿para que puede servir?: para tener un documento y que en el mismo documento este el hash sin necesidad de tenerlo aparte.

En fin, otra loca idea...
¿ Tu emule te aparece así ---- ? ¡¡ Tenés LOWID !! : >>SOLUCIÓN<<

Camello_AR

de alguna forma se debe poder, pues algunos archivos o imágenes de linux, permite verificar el contenido (salvo que el contenedor tenga una lista de hash de los archivos contenidos, lo cual suena más logico y facil)

Predicador

Hola, creo que voy a separar en dos partes,
Cita de: snoop en Julio 03, 2008, 12:31:35
Bueno, es medio raro lo que planteo, pero siempre me aparece por la cabeza esa idea:
¿ Es posible encontrar un archivo que en su contenido se encuentre el hash de ese mismo archivo ?

Por ejemplo si el archivo contiene:
AAAAAA
Que el hash de eso sea AAAAAA.

O
Por ejemplo si el archivo contiene:
BBBBAAAAAACC
Que el hash de eso sea AAAAAA.
Para esta pergunta podria decir que si es posible, solo depende de la funcion hash que usemos; por ejemplo si nuestra funcion hash es "devolver 64 bytes continuos desde una posicion al azar dentro del archivo" entonces es facil (tambien seria una funcion hash debil y practicamente inutil). Ya si nuestra funcion hash es MD5 o del estilo SHA ahi ya es mas complicado que ocurra, pero si puede ocurrir que el hash de el primer archivo y el segudo sean iguales y a esto se le denomina colision de hashes y es algo indeseable en las funciones hash que se trata de evitar.
Ahora, adjuntadome a tu estado mental alterado y haciendo el supuesto de que tenemos el tiempo suficiente (infinito) como para calcular el hash MD5 de π (pi) con sus infinitos decimales, entonces en ese caso el resultado del hash estaria incluido en algun lugar de los infinitos decimales de π. (http://www.angio.net/pi/piquery <-- aca pueden buscar su numero de DNI o telefono dentro de π y ver que aparece [solo en los primeros 16 millones de decimales]).

Cita de: snoop en Julio 03, 2008, 12:31:35
¿para que puede servir?: para tener un documento y que en el mismo documento este el hash sin necesidad de tenerlo aparte.

En fin, otra loca idea...
El problema de que el mismo contenido sea el resultado de la funcion hash es que perdes la oportunidad de verificacion de datos al no tener un resultado de hash independiente para comprar. Todos sabemos que para verificar se calcula el hash (normalmente usando md5) del archivo y luego se compara con un archivito que tiene una el resultado hash calculado previamente.
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

snoop

Si la idea seria un hash fuerte como MD5 o SHA, el tema es que cada vez que se modifica el archivo (para ingresar el hash) se genera un nuevo hash y ahí es donde veo la recursividad, ahora mientras mas grande sea el archivo mas posibilidades va a haber de que el hash este en el mismo.
Muy bueno lo de PI.

Saludos
¿ Tu emule te aparece así ---- ? ¡¡ Tenés LOWID !! : >>SOLUCIÓN<<

focojoaco

#4
la verdad creo que no existe tal cosa
como dijo predicador, hash debil
y como dijo snoop, con hash fuerte pierde
su hash original al agregarlo, algo como, hash(t)=! hash(concat(t,hash(t)))
de todas formas me gusto tu idea
habria que buscar fundamentos matematicos para probarlo
alguna matemágico presente? jejeje  :jaja:
:up:

Camello_AR

salvo que
hash(archivo) > archivo2
copy archivo+archivo2 archivo3
(aca no se la orden que podria ir, pero dividir archivo3 en dos pedazos, uno con los X bites del final y el otro el resto)
compare hash(archivo.recup) archivo2.recup

focojoaco

Cita de: Camello_AR en Julio 05, 2008, 18:25:41
salvo que
hash(archivo) > archivo2
copy archivo+archivo2 archivo3
(aca no se la orden que podria ir, pero dividir archivo3 en dos pedazos, uno con los X bites del final y el otro el resto)
compare hash(archivo.recup) archivo2.recup
no estarias haciendo el hash clasico  ¿?

Camello_AR

si, pero despues agregas el hash al archivo y lo sacas para hashear.

La idea es
parte 1
md5hash archivo.ext archivo.md5
copy archivo.ext+archivo.md5 archivo.ext.integrado
parte 2
split (hay una orden en linux para eso pero no se la sintaxis asi que la invento) archivo.ext.integrado archivo.ext archivo.md5 largo_archivo-64 (quiero decir, dividir archivo tamaño de parte el total menos los 64 -o los bits que tenga de largo- del hash)
md5hash archivo.ext archivo.com.md5
fc archivo.md5 archivo.com.md5

focojoaco

entonces basicamente, calculas el hash lo agregas al archivo, pero adentro
y despues para verficarlo, lo splitias (perdon por eso), y separas
datos  de hash. Para terminar calculas el hash de la parte de datos
y comparas con el hash separado...
supungo que es eso lo que decis...
suena logico, te ahorras la carga de dos archivos en unos solo
interesante...
aunque no respetamos la idea de snopp
:jaja: