Módulo hashlib de Python

Python hashlibEl módulo se utiliza principalmente para realizar operaciones hash.

Hash es un algoritmo que mapea datos de entrada de cualquier longitud a datos de salida de longitud fija.

El hash se usa comúnmente en escenarios como verificar la integridad de los datos y almacenar contraseñas de forma segura.

La salida de una función hash suele ser una cadena de letras y números aparentemente aleatoria.

El módulo hashlib proporciona implementaciones de algoritmos hash comunes, como MD5, SHA-1, SHA-256, etc.

Para usarhashlibla función primero debe importarse:

import hashlib 

Ver el contenido del módulo hashlib:

Ejemplo

>>> import hashlib
>>> dir(hashlib)
['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

A continuación se presentan algunos métodos comunes del módulo hashlib y una introducción a los algoritmos hash:

Métodos comunes

hashlib.new(name, data=None): Crea un objeto hash.

El parámetro name es el nombre del algoritmo hash, y el parámetro data son los datos que se van a hash.

Ejemplo


import hashlib

sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'EJEMPLO')
print(sha256_hash.hexdigest())

El resultado es:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: Crea directamente un objeto hash usando un algoritmo hash específico.

Ejemplo

import hashlib

md5_hash = hashlib.md5(b'EJEMPLO')
print(md5_hash.hexdigest())

El resultado es:

18fa661e2a4a7dd6471cc1407290cf6e

Métodos del objeto hash

update(data): Actualiza el contenido del mensaje del objeto hash.

Ejemplo

import hashlib

sha256_hash = hashlib.sha256()
sha256_hash.update(b'Hello, ')
sha256_hash.update(b'Ejemplo!')
print(sha256_hash.hexdigest())

El resultado es:

1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7

hexdigest(): Obtiene el valor hash en representación hexadecimal.

Ejemplo

import hashlib

md5_hash = hashlib.md5(b'EJEMPLO')
print(md5_hash.hexdigest())

El resultado es:

18fa661e2a4a7dd6471cc1407290cf6e

digest(): Obtiene el valor hash en representación binaria.

Ejemplo

import hashlib

sha1_hash = hashlib.sha1(b'EJEMPLO')
print(sha1_hash.digest())

El resultado es:

b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'

Algoritmos hash comunes

MD5

Ejemplo

import hashlib

md5_hash = hashlib.md5(b'EJEMPLO')
print(md5_hash.hexdigest())

El resultado es:

18fa661e2a4a7dd6471cc1407290cf6e

SHA-1

Ejemplo

import hashlib

sha1_hash = hashlib.sha1(b'EJEMPLO')
print(sha1_hash.hexdigest())

El resultado es:

341709d0dbc266332f1cbcd8c25fd4a05412b7d4

SHA-256

Ejemplo

import hashlib

sha256_hash = hashlib.sha256(b'EJEMPLO')
print(sha256_hash.hexdigest())

El resultado es:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

SHA-512

Ejemplo

import hashlib

sha512_hash = hashlib.sha512(b'EJEMPLO')
print(sha512_hash.hexdigest())

El resultado es:

7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811

En aplicaciones prácticas, elegir el algoritmo hash adecuado depende de las necesidades específicas. Cabe señalar que MD5 y SHA-1 ya se consideran inseguros, especialmente en el campo de la seguridad; se recomienda usar algoritmos más robustos como SHA-256 o SHA-512.

Algoritmos hash comunes en el módulo hashlib de Python y sus significados:

Nombre del algoritmoLongitud del resumen (bits)Longitud de salida (bytes)SeguridadUso
md512816InseguroVerificación de integridad de datos, almacenamiento de contraseñas, etc.
sha116020InseguroVerificación de integridad de datos, almacenamiento de contraseñas, etc.
sha22422428bajoVerificación de integridad de datos, firmas digitales, etc.
sha25625632MedioVerificación de integridad de datos, firmas digitales, etc.
sha38438448AltoFirmas digitales, algoritmos de cifrado, etc.
sha51251264AltoFirmas digitales, algoritmos de cifrado, etc.
sha3_22422428AltoMiembro de la familia SHA-3, estándar futuro, adecuado para firmas digitales, etc.
sha3_25625632AltoMiembro de la familia SHA-3, estándar futuro, adecuado para firmas digitales, etc.
sha3_38438448AltoMiembro de la familia SHA-3, estándar futuro, adecuado para firmas digitales, etc.
sha3_51251264AltoMiembro de la familia SHA-3, estándar futuro, adecuado para firmas digitales, etc.
shake_128VariableVariableAltoLa serie SHAKE es la versión de longitud variable de la familia SHA-3, adecuada para diversas aplicaciones.
shake_256VariableVariableAltoLa serie SHAKE es la versión de longitud variable de la familia SHA-3, adecuada para diversas aplicaciones.

Nota:

  • Longitud del resumen (bits):Indica la longitud del resumen que produce el algoritmo hash, en bits.
  • Longitud de salida (bytes):Indica la longitud del resumen que produce el algoritmo hash, en bytes.
  • Seguridad:Indica el nivel de seguridad del algoritmo hash, incluyendo "inseguro", "bajo", "medio" y "alto". Esta es una clasificación general; la seguridad específica también debe considerar el uso del algoritmo y los escenarios de ataque concretos.
Otras extensiones