La sorprendente función hash MD5

6 de junio de 2014

De todas las nuevas funciones que trae FileMaker13, cabe destacar la llamada GetContainerAttributen (campo Fuente; Atributo), una funcionalidad relacionada con los campos-contenedor y su contenido. Ha sido diseñada para consultar los metadatos que suelen almacenarse junto con las imágenes, como por ejemplo, las etiquetas geográficas, dimensiones de una imagen, etc. Precisamente, uno de los "atributos" que se puede obtener a partir de una imagen es la función hash MD5. Y ahí es donde las cosas se ponen interesantes.

Aclarando términos

Por un lado, tal como ya hemos visto, la función GetContainerAttribute consiste en devolver los metadatos del archivo al campo contenedor especificado. Por otro, hash MD5 (Message-Digest Algorithm 5) es un algoritmo de reducción criptográfico de 128 bits. Como FileMaker informa en su web, el resultado de aplicar la función hash MD5 de un archivo se inserta en el campo contenedor o en un archivo al que hace referencia un campo contenedor.

En el caso de MD5, GetContainerAttribute funciona bien en una cadena de texto. Por ejemplo:

GetContainerAttribute("FileMaker 13"; "MD5")

devuelve este mensaje: "40C00990596E5C60097456C81FDFEAA2"

Funciones hash

Un valor hash, también denominado función picadillo o función resumen, es una manera de tomar algunos datos de longitud arbitraria y conseguir algunos otros de longitud fija más corta, que sirven como una referencia única del original. Dicho de otro modo, el "valor hash" no puede utilizarse sin acortarse para obtener el valor original.

Conviene hacer hincapié en que la misma entrada siempre producirá la misma salida, esto se suele conocer como "una dirección de hash" (one way hash). Sin embargo, si modifico algo en la función hash MD5, la nueva hash tendrá un valor completamente distinto.

Las funciones hash tienen muchísimos usos. Aquí vamos a hablar de sólo dos, el cifrado y el cambio. Conviene aclarar que a pesar de que se ha demostrado que la función hash MD5 es débil en términos de codificación, es la única relacionada con la encriptación que tenemos en FileMaker.

Encriptación

La función GetContainerAttribute sirve para discutir y almacenar las contraseñas de usuario en una base de datos de FileMaker. Aunque esto no es recomendable, muchos usuarios lo hacen debido a que tiene varias ventajas respecto a la gestión de contraseñas en FileMaker.

Para hacer el camino del método hash más seguro, también podemos utilizar una salt, datos aleatorios que se añaden a la cadena de hash para dotarla de una mayor seguridad. Esto hace que la función hash de la contraseña vaya cambiando y no sea siempre la misma. Para comprobar que la contraseña es correcta, necesitaremos la salt, que normalmente se almacena en la base de datos de la cuenta del usuario junto con la hash o como parte de la cadena de hash en sí.

En el vídeo de Geistinteractive se muestra cómo usar la función GetContainerAttribute para almacenar las contraseñas de usuario en una base de datos de FileMaker.

Función Hash MD5 Encriptación BBDD

Detección de cambios

Como hemos visto, el método hash es una representación única corta de algo más grande. Lo que puede resultar muy útil si se desea comprobar si ese archivo grande ha cambiado respecto a un momento dado sin tener que guardar una copia completa del original.

Un determinado valor hash nos permite representar todos los registros de un conjunto encontrado. Si se cambiase algún registro, o si éste hubiese sido borrado o añadido, el valor hash cambiaría. Esto resulta extremadamente útil si necesitas hacer algún tipo de proceso de datos pesado en un conjunto encontrado, aunque sólo informará de que se ha modificado, no de los cambios en sí mismos.

Fuente: Geistinteractive (traducción).

Back to top

Política de privacidad

El usuario que facilita sus datos personales a SETFILE consiente expresamente en la incorporación de los mismos al citado fichero y en el tratamiento de los mismos por parte de SETFILE para su utilización en actividades propias de sus fines previstos en el artículo 2º de sus Estatutos. En el formulario de recogida de datos estarán indicados aquellos que resultan obligatorios y los que no tienen ese carácter. La no cumplimentación de los datos marcados como "obligatorios" supone la no prestación del servicio o acceso para el que se solicitan los datos. En cualquier caso el tratamiento de los datos personales facilitados por el usuario se realizará con estricto cumplimiento de la normativa vigente y especialmente con la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal. En especial, SETFILE se compromete a mantener las condiciones de confidencialidad y seguridad de los datos personales confiados por los usuarios en los términos previstos en la legislación vigente. No obstante, SETFILE no se hace responsable del acceso, modificación, tratamiento, pérdida o uso ilícito que de los datos facilitados por los usuarios pueda efectuar un tercero. El usuario podrá ejercitar los derechos de acceso, rectificación, cancelación y oposición previstos en la normativa vigente dirigiéndose a SETFILE c/ Balmes, 430 Entlo. F - 08022 BARCELONA, donde podrá igualmente dejar sin efecto, sin carácter retroactivo los consentimientos antes expresados.