ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: snoop en Julio 03, 2008, 12:31:35

Título: ¿A=HASH(A) hash recursivo?
Publicado por: 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 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...
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: Camello_AR en Julio 03, 2008, 15:29:53
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)
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: Predicador en Julio 04, 2008, 03:13:12
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
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: snoop en Julio 04, 2008, 12:46:50
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
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: focojoaco en Julio 05, 2008, 13:00:46
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:
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: 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
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: focojoaco en Julio 05, 2008, 19:46:50
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  ¿?
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: Camello_AR en Julio 05, 2008, 21:03:04
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
Título: Re: ¿A=HASH(A) hash recursivo?
Publicado por: focojoaco en Julio 06, 2008, 12:01:00
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: