2008-10-28 20 views
8

Estoy trabajando con un pequeño sistema de archivos FAT16, y quiero generar valores CRC para los archivos XML indiduales que almacenan información de configuración. En caso de que los datos cambien o estén dañados, deseo poder verificar el CRC para determinar que el archivo aún se encuentra en su estado original.CRC comprueba los archivos

La pregunta es, ¿cómo puedo poner el valor CRC en el archivo, sin cambiar el valor CRC del archivo en sí? Puedo pensar en un par de soluciones, pero creo que debe haber una solución bastante estándar para este problema.

Respuesta

8

Puede agregar el valor CRC al final del archivo. Luego, al calcular el valor CRC más tarde para verificar, omita los últimos cuatro bytes.

5

Defina un encabezado, genere el CRC de todo excepto el encabezado y luego coloque el valor en el encabezado.

0

No hay forma de hacerlo. Puede hacer que los primeros x bytes (CRC use un entero de 32 bits, por lo que 4 bytes) contengan el CRC y luego, al calcular su CRC, solo podría considerar los bytes que vienen después de los 4 bytes iniciales.

Otra solución sería incluir el CRC en el nombre del archivo. Entonces MyFile.Config terminaría siendo MyFile.CRC1234567.Config.

1

Una solución sería usar dsofile.dll para agregar propiedades extendidas a sus archivos. Puede guardar el valor CRC (convertido en una cadena) como una propiedad de archivo extendida. De esa forma no cambia la estructura del archivo.

dsofile.dll es una dll ActiveX por lo que se puede llamar desde varios idiomas, sin embargo, lo limita a ejecutar en Windows. Aquí hay más información sobre dsofile.dll: http://support.microsoft.com/kb/224351

+0

Creo que dsofile.dll solo funciona con archivos 'Structured Storage'. –

4

Una solución común es simplemente utilizar diferentes archivos. Junto a cada archivo, simplemente tiene un archivo con el mismo nombre de archivo con una extensión diferente. Por ejemplo: foobar.txt y foobar.txt.md5 (o .crc).

1

No almacenaría el CRC en el archivo. Tendría un solo archivo (usaría el formato XML) que usa su programa, con una lista de nombres de archivos y sus valores CRC asociados. No hay necesidad de hacerlo tan complicado.

4

La solución común que se utiliza ampliamente en los protocolos de comunicación es establecer el campo CRC en 0, calcular el CRC y luego colocarlo en lugar de 0. El código de comprobación debe hacer el proceso inverso: lea el CRC, ponga el cero campo, calcule el CRC y compare.

Además, para una suma de comprobación de archivos recomiendo MD5 en lugar de CRC.

Cuestiones relacionadas