desarrollo,  python

Calculando el HASH en Python

Hemos visto que es un HASH y ejemplos de uso, ahora veremos cómo implementarlo en Python utilizando el módulo hashlib.

A estas alturas todos el sabemos que es un HASH, así que pasemos directamente al código.

Calculando el HASH de una cadena de texto

El siguiente ejemplo calcula el md5 de la cadena pasada como parámetro.

import hashlib

hashmd5 = hashlib.md5()    
stexto="hola Altaruru, hoy es lunes 1 de Octubre de 2018"
hashmd5.update(stexto.encode())
print (hashmd5.hexdigest())

Si os fijáis, lo único que merece mención especial es que debemos pasar la cadena codificada para que sea aceptada como parámetro por la función update().

Obtenemos la salida en formato hexadecimal con hexdigest.

El resultado de la ejecución es el siguiente:

2ee97007c2d0d7e15310c6131e34e388

El mismo ejemplo con sha256:

import hashlib

hashsha = hashlib.sha256()
stexto="hola Altaruru, hoy es lunes 1 de Octubre de 2018"
hashsha.update(stexto.encode())
print (hashsha.hexdigest())

Da como resultado:

fa3cccc718c7598ddc909a8e2dc7cb8e2d0179164a965b293f6b681b9f78f2bb

Podemos crear nuestras propias funciones para simplificar el código

def getmd5str(stexto):
    hashmd5 = hashlib.md5()    
    hashmd5.update(stexto.encode())
    return hashmd5.hexdigest()

def getsha256str(stexto):
    hashsha = hashlib.sha256()        
    hashsha.update(stexto.encode())
    return hashsha.hexdigest()
print(getmd5str("hola Altaruru, hoy es lunes 1 de Octubre de 2018"))
print(getsha256str("hola Altaruru, hoy es lunes 1 de Octubre de 2018"))

Calcular el HASH de un archivo

Otro caso frecuente de uso es obtener el HASH de un fichero.

La siguiente función devuelve el MD5 del archivo pasado como parámetro.

def getmd5file(archivo):
    try:
        hashmd5 = hashlib.md5()
        with open(archivo, "rb") as f:
            for bloque in iter(lambda: f.read(4096), b""):
                hashmd5.update(bloque)
        return hashmd5.hexdigest()
    except Exception as e:
        print("Error: %s" % (e))
        return ""
    except:
        print("Error desconocido")
        return ""
print(getmd5file("/home/altaruru/captura1.png"))

Devuelve el hash md5: 2f14fb978e9cf7325ee526839e10df9f

E implementando sha256:

def getsha256file(archivo):
    try:
        hashsha = hashlib.sha256()
        with open(archivo, "rb") as f:
            for bloque in iter(lambda: f.read(4096), b""):
                hashsha.update(bloque)
        return hashsha.hexdigest()
    except Exception as e:
        print("Error: %s" % (e))
        return ""
    except:
        print("Error desconocido")
        return ""
print(getsha256file("/home/altaruru/captura1.png"))

Devuelve el hash sha256: 949aa9164c4c851cef8c34c9b08a563efc09415e79083174f381a1b3cfd2ff14

 

Espero que sea útil. No olvidéis dejar vuestros comentarios.

Feliz día!

 

Deja un comentario

Tu dirección de correo electrónico no será publicada.