Cómo saber la suma MD5 o SHA de una palabra, oración o archivo

Hace unos días les mostré un script en el cual usando Bash y md5sum encripté el password correcto de un simple sistema de seguridad que me programé yo mismo.

O sea, que en una terminal ponía:

echo "desdelinux" | md5sum

Y me salía la suma MD5 de esa palabra o texto, en este caso: desdelinux

Gracias a HacKan conocí shasum … que es más seguro que md5sum.

Explicando un poco más, MD5 es una forma de proteger texto, siguiendo el ejemplo anterior, el MD5 de desdelinux es:

2dac690b816a43e4fd9df5ee35e3790d

El detalle es que no importa qué tan extenso sea el texto, el MD5 del mismo siempre será de 33 caracteres (letras y números), por ejemplo este es el MD5 de: Aprenda a ser mejor desde Linux

98a53ca0624f3bc555f7f5055d8248c2

Como ven, 33 caracteres igual.

El problema que esto tiene, es que para propósitos de seguridad en realidad MD5 no es lo más recomendado, para cifrar passwords por ejemplo, puesto que ya se han detectado colisiones de hash de MD5. O sea, una colisión de hash es que dos cadenas de textos diferentes pueden dar la misma salida, o sea, que (por ejemplo) «linux» y «hsjajeya» ambos den la misma suma hash.

Para los que como yo son un poco paranoicos con el tema seguridad, existen otras alternativas… hoy les hablaré de SHA.

A mi forma de ver, SHA (Secure Hash Algorithm, inventado por NSA) cumple el mismo propósito que MD5, solo que nos brinda más opciones.

Por ejemplo, una suma de hash SHA de «desdelinux» sería:

echo "desdelinux" | shasum

Y el resultado es:

2ed14068a18ce404054dfc63e50c28e918a92a14

Como pueden ver, son más caracteres que un MD5, ahora son 41 caracteres en vez de los 33 del MD5.

Pero esto no es todo, esta suma es usando SHA-1, pero podemos mejorar notablemente la seguridad usando sha256sum , sha384sum y sha512sum.

Esto lo que haría es simple, agregar un cifrado de más bits 😉 …

Vean acá el hash de «desdelinux» pero con sha256sum:

echo "desdelinux" | sha256sum

Resultado:

092eb52ac23733af779224f9f7511be782e57264bd1af3afba6bd6454f471f8a

Como pueden ver, muchos más caracteres, específicamente 65.

Yo personalmente en mi script uso sha512sum para proteger el password jeje… y para seguir con el ejemplo, el sha512sum de «desdelinux» sería:

Son exactamente: 129 caracteres 😉 …. esto, quiero ver quién sería el listillo que podría adivinarlo… LOL!

Pero …

¿Cómo saber el MD5 o SHA del contenido de un archivo?

Supongamos que tenemos el archivo desdelinux.txt … que contiene lo siguiente:

<° Linux (a.k.a DesdeLinux) es un sitio dedicado a temas relacionados con El Software y Las Tecnologías Libres. Nuestro objetivo no es otro que brindarle a todo aquel usuario que se inicia en el mundo de GNU/Linux, un lugar donde pueda adquirir nuevos conocimientos de la forma más fácil posible.

Para saber la suma MD5 de este archivo ponemos en una terminal:

md5sum desdelinux.txt

Esto nos mostrará:

dbc34981efb56416969e87875f8d4b8e desdelinux.txt

Para hacerlo con SHA en vez de con MD5… adivinen 😀 … :

shasum desdelinux.net

Y nos mostrará:

097a527d1b5cfa393f7d8b45b82c9c52cc4f18d2 desdelinux.txt

O si gustan igual pueden usar sha256sum , sha384sum o sha512sum 😉

En fin, acá termina el artículo.

Yo he encontrado sumamente interesante aprender sobre esto, siempre me ha atraído lo relacionado a seguridad, espero que a ustedes también les resulte de interés.

Si alguien tiene alguna duda, bueno yo no me considero ni de lejos un experto en el tema, pero sin lugar a dudas intentaré ayudarle 😀

Saludos


13 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   elendilnarsil dijo

    no sabía que md5 y sha se podían usar en archivos de texto. muy buena información. yo estaba acostumbrado a ver este tipo de método de seguridad en los ISO de las distros. jeje

    1.    Charlie-Brown dijo

      No solamente a archivos de texto, se le puede calcular a cualquier tipo de archivo.

      1.    elendilnarsil dijo

        bueno, ahora lo se. todos los días se puede aprender algo nuevo.

    2.    Giskard dijo

      En Linux todo es un archivo 😉 Imagínate lo que puedes hacer ahora con esto.

      1.    KZKG^Gaara dijo

        O un archivo o una carpeta en realidad 😉

  2.   Giskard dijo

    Muy buena línea de artículos de KZKG^Gaara. Si se valen peticiones, ya que hiciste uno sobre GPG pero con una palabra clave podrías hacer uno que contemple el uso de las dos llaves?
    Si se valen peticiones, claro 🙂

    1.    KZKG^Gaara dijo

      Uff, yo aún no ando muy claro sobre el tema de las llaves GPG y tal jajajajajaja, veré qué puedo hacer 😀
      Gracias por lo de buena línea de artículos jajajajaja

  3.   martxelo dijo

    Un pequeño apunte. Tened en cuenta que «echo» introduce un final de línea por defecto y por lo tanto el hash que estáis calculando al usarlo tal cual es el del texto introducido + final de línea, que nunca será el mismo que el del texto únicamente.

    Por suerte, podemos usar la opción -n de manera que el comando no introduzca un final de línea. Por lo tanto, la manera correcta de los ejemplos de arriba sería:

    echo -n "desdelinux" | md5sum

    Un saludo.

    1.    KZKG^Gaara dijo

      Yo lo resolví con un awk imprimiendo solo la 1ra columna al final, pero genial tu aporte, se ahorran muchos caracteres 😀

  4.   Rainbow dijo

    Solo una acotación, en realidad el MD5 siempre tiene 32 carácteres.

  5.   nauta dijo

    Gracias por la información.
    estos temas de seguridad y privacidad son importantes

  6.   JK dijo

    He estado aprendiendo cómo calcular los md5sum en Linux pero como soy novato, después de resolver el lío de cómo llegar en la terminal al directorio donde está el archivo (digo lío por los benditos espacios en blanco), vuelvo a toparme con el mismo problema en el nombre del archivo: ya estando en el directorio correcto dijito –j intencional– NOMBREARCHIVO.EXTENSIÓN pero como el nombre del archivo tiene espacios en blanco, no obtengo el checksum. Aclaro que no puedo cambiar el nombre del archivo porque estoy haciendo seed de él para un torrent.
    Los posts que leo sobre el tema ni siquiera mencionan el problema de los espacios en blanco, peor aún, suponen que uno siempre está posicionado en el directorio correcto y no se ponen en el lugar de un novato que necesita confirmar estos summ ¿Cómo se resuelve esto? Gracias de antemano

    1.    Miguel dijo

      Hola, ya han pasado 11 meses pero para el que llegue nuevo podría servirle.
      Bajo línea de comandos existe lo que se llaman carácteres especiales de escape.
      Sirven para evitar que un programa o guión de SHELL interprete un carácter como parte del código por así decirlo.

      Ejemplo para lo que mencionas:

      md5sum Escritorio/Descargas/descargas\ Bitorrent/archivo\ lo\ que\ sea.ext

      Con el carácter «\» evitas que la terminal interprete los espacios como parte de código, con lo que lee los espacios como parte de la cadena de la ruta, obteniendo el md5 del archivo:

      Escritorio/Descargas/descargas Bitorrent/archivo lo que sea.ext

      Hay diferentes escapes para diferentes programas, incluso sed proporciona escapes como «, #, etc etc

      Un saludo.