Presentamos el Robot /file/hash para la integridad de archivos
Ha llegado el momento de dar la bienvenida a un nuevo Robot a la familia Transloadit. Te presentamos a /file/hash, nuestro nuevo Robot. Con su llegada, ahora es posible calcular el hash de cualquier archivo que forme parte del proceso de ejecución de tu Assembly, lo que resulta especialmente útil para verificar la integridad de tu archivo.
También tienes varios algoritmos entre los que elegir, ya sea que busques usar el rápido algoritmo MD5 o una opción más segura, como SHA-512.
Cuando el Robot termine de calcular el hash de tu archivo,
guardará ese hash en la propiedad file.meta.hash, para que puedas acceder a él en
Steps posteriores.

El cálculo de hashes de archivos en acción
Como ejemplo, veamos cómo podría ser un Template si quisiéramos verificar si un archivo ha cambiado después de modificar su tamaño. Primero tomaremos el archivo que subimos y calcularemos su hash. Luego, cambiaremos el tamaño del archivo original y volveremos a calcular su hash. Simplemente compara el hash de la imagen cuyo tamaño se cambió con el de la imagen original. Si son diferentes, sabemos que los bytes del archivo han cambiado; el hash por sí solo no demuestra que se haya realizado una operación de cambio de tamaño.
Así se vería:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"resize_image": {
"use": ":original",
"robot": "/image/resize",
"height": 500,
"imagemagick_stack": "v3.0.1",
"resize_strategy": "fit"
},
"hash_original": {
"use": ":original",
"robot": "/file/hash",
"result": true,
"algorithm": "sha1"
},
"hash_resized": {
"use": "resize_image",
"robot": "/file/hash",
"result": true,
"algorithm": "sha1"
}
}
}
¿Ves que estamos usando el algoritmo sha1? Puedes cambiar fácilmente el
parámetro algorithm a cualquiera de las siguientes opciones para generar hashes
con distintos algoritmos según el caso de uso.
b2md5sha1sha224sha256sha384sha512
Pruebas
Ahora, pongamos a prueba nuestro Template. Sube una imagen y observa el hash que se genera para el archivo y si cambia a lo largo de nuestros Steps.
hash_original
meta.hash:924eb08378f97f1fe2744b77a79373078af3487chash_resized
meta.hash:c51c917811c2b3a515c303b682c610224aa77621Como esperábamos, los hashes generados para nuestros dos archivos son diferentes, lo que significa que sus bytes difieren. Nuestro flujo de trabajo demuestra el cambio de tamaño; los hashes por sí solos no lo demuestran.
Hasta la próxima
Aquí termina nuestro breve recorrido por /file/hash, un Robot. Regístrate en Transloadit a continuación y experimenta por tu cuenta con este Robot, así como con nuestra colección de otros Robots.
