martes, agosto 18, 2015

Como generar un resumen de mensaje (hash) con openssl

Los message digest o resumen de mensaje o hash, como se los conoce comúnmente sobre una cadena de bytes nos permiten calcular un resumen sobre un mensaje el cual nos puede servir para validar la no modificación del mensaje, por ej. si bajamos un archivo de internet, que se haya descargado correctamente o que no haya sufrido una modificación.

Conociendo el tamaño del mensaje y su hash, es posible verificarlo, ya que los algoritmos para la generación del hash garantizan que es muy difícil generar otro mensaje del mismo tamaño y que al calcular el hash este sea el mismo del mensaje original.

Hay diferentes algoritmos para obtener el hash, entre los más conocidos: md5, sha1, sha256, sha512.

Mediante el uso de openssl podemos generar el hash para un mensaje o cadena de texto:

ejemplos:

echo -n "este es el mensaje" | openssl dgst -md5
273413cf8c45230add58d6f4ca0ab467

echo -n "este es el mensaje" | openssl dgst -sha256
ccf7dcbc6bac2e645f895440b9f0be1c6083ba9299ef352bc97514bb5988dd87

echo -n "este es el mensaje" | openssl dgst -sha512
10ffd258a8dfd95bd97cd6d8a336dc906d3401df6476fd211a55e89096f075a39c8e4cd42c5bd3151ba465194e2b13b918cd33057b0c346139e9d428113fedaa

Lo que se imprime es la representación hexadecimal de los bytes que forman el hash, pero si necesitamos guardar a un archivo el valor en binario de dicho resultado o pasarlo en binario a otro programa es posible hacerlo mediante el flag -binary

echo -n "este es el mensaje" | openssl dgst -sha256 -binary > sha256.bin

El comando anterior manda el hash al archivo sha256.bin, dado que 256 bits / 8 = 32 bytes, podemos comprobar que el archivo pesa 32 bytes

ls -lh sha256.bin
-rw-r--r-- 1 user user   32 2015-08-18 18:23 sha256.bin

De la misma forma podemos calcular el hash a un archivo, por ejemplo:

md5sum iprules.sh 
726c99a062d2dc23e8b836c2221ef25c  iprules.sh

cat iprules.sh | openssl dgst -md5
726c99a062d2dc23e8b836c2221ef25c

No hay comentarios.: