2010-05-27 17 views
5

Hoy leí sobre el hash MD5 y me preguntaba si esto es posible. parece un problema recursivo ... o hay una solución?¿Guardar un hash MD5 de un archivo de texto en el mismo archivo de texto?

+0

Es esto posible ... MD5 (basura + x) == x ? como un documento con su propia información MD5 en su última página? – bakra

+0

Sí, como he escrito es posible en teoría - pero para ello requiere una gran cantidad de intentos y la suerte ... no se puede construir * * un documento de este tipo con un disparo. – tanascius

Respuesta

2

Debe excluir la suma de hash del cálculo. Entonces lo has usado, pero no puedes agregar el hash rum hasta el final del archivo esperando que sea correcto, o si calculas el run over new yu siempre terminará con un nuevo hash MD5. Entrando en una historia interminable :)

3

Bueno, tan pronto como complete la suma MD5 el archivo cambiará y obtendrá un nuevo MD5 - entonces: no, no es factible. En teoría, solo prueba y error podría llevar a un documento que contiene su propio hash ... pero el documento probablemente sería bastante confuso y no contendría nada significativo.

Pero es posible llenar 128 bit con ceros (por ejemplo) durante el cálculo. Este lugar contendrá la suma MD5 y tiene que ser cero otra vez, al verificar el hash más tarde.

+0

adenda: No es factible ** que sepamos de **. Es muy posible que algún supergenio matemático futuro idee una forma de construir rápidamente un archivo así. –

+0

@BlueRaja: Ver [aquí] (http://www.mscs.dal.ca/~selinger/md5collision/). – sbi

+0

@sbi: que no tiene nada que ver con esto ... duscussion –

4

No es posible.

Pero puede cambiar el nombre del archivo de acuerdo con el hash de su contenido, que adjunta la información sin cambiar el hash.

1

Bueno, agregar un hash MD5 a un texto cambia el texto y, por lo tanto, el hash MD5. No es posible calcular un hash MD5 de su hash MD5 con texto incluido para calcular.

4

Considere cualquier hash e imagínese agregarle texto aleatorio. Puesto que no es una cantidad infinita de posibles textos se podría añadir, pero sólo una cantidad finita de posibles valores de troceo, tiene que haber posibles textos que producen el hash. El problema es que quizás no tenga suficientes recursos para encontrarlo.

Lo que podría ser capaz de tratar es si hay algún valores hash MD5 que, al hash, yield themselves as a result (gracias a Francesco para ese enlace!):
Para todas las permutaciones posibles de un hash MD5, crear el hash y compare el resultado con el original.

+1

Es decir, ¿el hash MD5 admite un punto fijo? Ver http://stackoverflow.com/questions/235785/is-there-an-md5-fixed-point-where-md5x-x – Francesco

+0

@Francesco: Gracias por el enlace, he añadido a la respuesta. – sbi

+0

Yo pensaba más en en estos términos: MD5 (basura + x) == x? me refiero a un .doc contiene otras cosas + la información hash MD5 al final. – bakra

2

En teoría, es posible: los posibles archivos son infinitos, los posibles hashes no lo son. En la práctica, ser capaz de lograrlo significaría que ha encontrado una vulnerabilidad en el algoritmo, lo que hace que el hash sea inútil por razones de seguridad.

0

Aquí hay otro truco ...

Guardar Hash en el principio del archivo y calcular MD5 ha excluido que los datos de la región y sólo importantes.

"HashMD5 = Md5.ComputeHash(bytes, 382, bytes.Length - 382)" 

para que cuente Hash sólo para la región de datos (estructura de datos personalizados a partir tras el desfase 382 en tampón de archivos)

------------------- ---- estructura de datos de ejemplo sigue -----------

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Ansi)> 
<Serializable()> Structure MyData 
    Dim FileCheckSum() As Byte '16 bytes HASh for file 'Config.bin' 
    Dim Padding() As Byte  ' 0xFF x 20 bytes 
    Dim RemoteDevice As RmtDevice 

End Structure 

En begining escribir este str para presentar config.bin usando "xxxx.FileSystem.WriteAllBytes()"

archivo de configuración A continuación, abra usando el editor hexadecimal posición de inicio elemento de relleno se encontró (en mi caso era 382)

Posteriormente utilizar este sin que compensar para el cálculo de MD5 en lugar de todo el archivo. De esta manera se tiene poca seguridad contra los datos corruptos

Nota !! -. mientras no de elementos de estructura/orden/elemento nos queda misma acolchado de la posición de arranque sigue siendo igual

trabajo para mí ..

Probado en. .net

Cuestiones relacionadas