antes de que se pueda responder a su pregunta, debe especificar por qué que desea la integridad de los datos en primer lugar: la protección contra cambios accidentales es algo muy diferente a la protección contra modificaciones del adversario. También debe especificar en qué contexto tiene lugar la validación: ¿cómo sabe el actor que realiza la validación cuál debe ser la suma de comprobación adecuada?
Me gustaría usar algunos campos como el tamaño del archivo y la fecha de creación en el hashing. ¿Es esa una forma posible o segura de hash?
En términos generales, no: eso no proporciona mucha información significativa.
Estos elementos se denominan metadatos: son datos sobre datos y, bueno, son un conjunto diferente de datos por sí mismos. Cuando lo lee, confía implícitamente en el medio de almacenamiento (sistema de archivos) para proporcionarle información precisa. Esta es una suposición que es simplemente errónea, incluso si solo está tratando de protegerse contra cambios accidentales (no falsificaciones).
En casos específicos muy limitados, podría ser útil: por ejemplo, si tiene un archivo de registro creado en un servidor seguro, puede usar el tamaño del archivo / la última fecha de escritura para saber cuándo ha cambiado el archivo y, por lo tanto, saber si tienes que volver a analizarlo Pero esto implica que la información es correcta, actualizada y que tiene un estado anterior para compararla.
De una manera más general
Como Steffen insinuó, el hash puede ser realmente muy rápido: debe leer el archivo solo una vez y, a menos que esté trabajando con recursos muy limitados (sistemas integrados, etc.), el retraso introducido por el proceso de hashing debe ser Mínimo y mucho más pequeño que la propia operación de E / S en la mayoría de los casos (a menos que esté operando estrictamente desde la memoria). Como siempre, el demonio está en los detalles: no proporcionó ninguna información sobre lo que pretendía hacer, por lo que no hay manera de proporcionar una respuesta más útil.