Skip to content

MD5 en Mac OS X

20 febrero 2010
tags:

En esta entrada vamos a ver cómo podemos generar un código MD5 en nuestro Mac, para cualquier cadena o fichero de entrada.

Un poco de teoría

MD5 (Message Digest Algorithm 5) es un algoritmo criptográfico cuya función principal es obtener un resumen de 128 bits de los datos que reciba como entrada. La salida del algoritmo será un código único de 32 dígitos en hexadecimal. (Cada dígito hexadecimal equivale a 4 bits en decimal). Sea cual sea la longitud de los datos de entrada, el resumen que se obtenga será 32 dígitos hexadecimales (128 bits). La potencia de este algoritmo, radica en el hecho de que simplemente con que cambie 1 bit en la entrada, la salida debe ser totalmente diferente.

MD5 surgió como ampliación del algoritmo MD4. MD4 fue un algoritmo pensado inicialmente para que fuera increíblemente rápido, dando más importancia a la rapidez que a la seguridad. Es por esto, que no tardaron mucho en encontrar debilidades al algoritmo.

Un algoritmo de resumen presenta debilidades cuando produce colisiones. Se provoca una colisión cuando un algoritmo resumen produce una misma salida para dos palabras de entrada distintas.

Rápidamente se demostró que no era difícil conseguir que MD4 provocara colisiones y se hizo patente que era necesario mejorarlo. Surgió por tanto MD5. MD5 es un poco más lento que MD4, pero consigue mejores resultados criptográficos, más seguros y con menor probabilidad de generar colisiones.

Aun así, estamos hablado de algoritmos que se diseñaron a principios de los 90. En esa época, los ordenadores no tenían ni la cuarta parte de la capacidad de cómputo que tienen ahora. Actualmente el algoritmo MD5 se encuentra seriamente comprometido y por eso es preferible usarlo con información que no resulte especialmente sensible.

El uso más habitual que se le da hoy en día a este algoritmo es para verificar que los datos que nos hemos descargados son correctos. Por ejemplo, cuando descargamos una imagen ISO de una distribución Linux, vemos que siempre nos facilitan un código MD5 para que comprobemos si la imagen que acabamos de descargar, es exactamente la misma que la que colgaron en el servidor y no ha sido modificada por el camino.

Dejo ya la teoría. En los enlaces al final de la entrada, tenéis más información si queréis indagar un poco más.

Parte práctica

Para generar un código resumen con MD5, lo primero que debemos hacer es abrir Terminal. Todo el trabajo que hagamos con MD5 lo haremos a través de la línea de comandos.

Vamos a generar el resumen MD5 de la cadena “Rekkeb’s blog”:

  1. Ejecutamos el comando: md5 -s “Rekkeb’s blog”
  2. Obtendremos la siguiente salida: MD5 (“Rekkeb’s blog”) = 0f9d05c407f5c8671233512983ef1765

Fijaos que le pasamos el parámetro: -s. Con esto le estamos indicando que lo que queremos resumir es una cadena de texto. Si la cadena de texto contiene espacios en blanco, debemos escribirla entre comillas.

Como veis, hemos obtenido una cadena de salida de 32 dígitos hexadecimales, que resultan en 128 bits en decimal.

Vamos a hacer un mínimo cambio a la cadena de entrada para ver cómo reacciona el algoritmo:

  1. Ejecutamos el comando: md5 -s (“Rekkebs blog”) –> sin el apóstrofe
  2. Obtendremos la siguiente salida: MD5 (“Rekkebs blog”) = 7808bd5a2fe9f492311a9328309e8fa9

Comparemos los resúmenes obtenidos:

  1. 0f9d05c407f5c8671233512983ef1765
  2. 7808bd5a2fe9f492311a9328309e8fa9

Como veis, no tienen nada que ver el uno con el otro. Un mínimo cambio en la cadena de entrada debe producir salidas completamente diferentes.

Si queremos generar el código resumen de una imagen ISO o cualquier otro fichero, no tendremos más que ejecutar el comando de la siguiente manera: md5 “RutaImagen/NombreImagen.iso” (Sin el parámetro -s)

  1. Vamos a generar el resumen MD5 de la aplicación: Preview.app
  2. Ejecutamos el siguiente comando: md5 /Applications/Preview.app/Contents/MacOS/Preview
  3. Obtendremos:MD5 (/Applications/Preview.app/Contents/MacOS/Preview) = f1f6ac510cf9fb09b9bd432a35e1575a

Más información

Wikipediahttp://es.wikipedia.org/wiki/MD5

RFChttp://www.ietf.org/rfc/rfc1321.txt

Anuncios
2 comentarios leave one →
  1. lsri8088 permalink
    9 febrero 2011 22:01

    Muchas gracias, me ha venido muy bien.

    ¿Esto me sirve para comprobar la integridad de un archivo comprimido (gz, dmg, zip, iso) que halla bajado y me den el MD5?

    ¿Hay algo para comparar ambas cadenas?

    Gracias y un saludo.

    • rekkeb permalink*
      10 febrero 2011 01:45

      Claro que sí te sirve. Puedes comparar las cadenas utilizando el commando diff.
      Este comando originalmente sólo sirve para comparar ficheros, pero se puede hacer un pequeño truco para comparar 2 cadenas.
      La idea sería ejecutar el comando de la siguiente forma: Supongamos que te has descargado la imagen .iso de Ubuntu y te dan el MD5 que es 123456789ABCDEF
      Para realizar la comparación con diff, tendrías que escribir:

      diff <(md5 -q ubuntu.iso) <(echo 123456789ABCDEF)

      Si el comando no devuelve ninguna salida, significa que las cadenas son iguales.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: