Este artículo forma parte del Curso de Python, con el que dominarás desde cero las habilidades necesarias para usar Python, desde lo básico hasta lo avanzado. El hash hex de 64 caracteres de hashlib.sha256, sus 3 propiedades (determinismo, avalancha, unidireccionalidad), detección de alteraciones y por qué usar bcrypt / argon2 para contraseñas.
hashlib es un módulo de la biblioteca estándar que calcula un valor hash de longitud fija a partir de cualquier secuencia de bytes. El algoritmo destacado SHA-256 devuelve una cadena hex de 256 bits = 64 caracteres, y se usa ampliamente donde quieras confirmar "¿es el mismo contenido?" — comprobaciones de integridad de archivos, firmado de API, IDs de commit de Git y similares.
A diferencia de pickle y base64, hashlib es una conversión unidireccional — no puedes recuperar la entrada desde la salida. Ten en cuenta que no es para "guardar y restaurar" sino para "solo dime si dos entradas son iguales o diferentes".
pickle / base64 vs hashlibpickle / base64 son conversiones reversibles, bidireccionales usadas para "guardar y restaurar" y "conversión de transporte". hashlib es una conversión no reversible, unidireccional para situaciones donde solo necesitas juzgar si dos entradas son iguales o diferentes. Los casos de uso son fundamentalmente diferentes — no los confundas.
SHA-256 — Un hash hex de 64 caracteres con tres propiedades
Cuatro usos típicos de hashlibVerificación de integridad de descargas / IDs de commit de Git / generación de claves de caché / firmado de peticiones API (HMAC). Lo común es juzgar "¿es el mismo contenido?" mediante un hash de longitud fija — no es reversible, así que no puede reemplazar el almacenamiento.Las tres propiedades de las funciones hashDeterminismo (misma entrada → misma salida), efecto avalancha (un bit diferente → salida totalmente distinta) y unidireccionalidad (no se puede recuperar la entrada desde la salida). SHA-256 siempre produce una cadena hex de 64 caracteres, usada para detección de alteración y comprobaciones de integridad.
Método / Algoritmo
Longitud en bits
Uso
hashlib.sha256(b)
256 bit (64 caracteres hex)
integridad de archivos / firmado de API (recomendado)
hashlib.sha512(b)
512 bit (128 caracteres hex)
cuando quieras un hash más largo
hashlib.md5(b)
128 bit (32 caracteres hex)
existen ataques de colisión — no usar en código nuevo
.hexdigest()
—
obtener el hash como cadena hex
.digest()
—
obtener el hash como bytes en crudo
No uses hashlib solo para almacenar contraseñas
Si guardas contraseñas de usuarios simplemente hasheándolas con sha256 o similar, se vuelven vulnerables a ataques de búsqueda precalculada (rainbow tables). Puedes defenderte de esto con bibliotecas dedicadas que incorporan salt + key stretching — bcrypt / argon2 / passlib. hashlib encaja en escenarios de "¿es la misma entrada?" como comprobaciones de integridad de archivos y firmado de API.
Calcula el SHA-256 de "Hello, Python!" y confirma que la salida es siempre una cadena hex de 64 caracteres.
① Importa hashlib y convierte la cadena "Hello, Python!" a bytes con UTF-8.
② Obtén el SHA-256 de esos bytes como cadena hex con hashlib.sha256(...).hexdigest().
③ Imprime la longitud del hash como Longitud SHA-256: ◯ (debería ser 64).
Editor Python
Ejecutar el código para ver el resultado
Verificar el determinismo y el efecto avalancha
Entre las características de las funciones hash, "misma entrada → misma salida" (determinismo) y "un carácter diferente → salida totalmente distinta" (efecto avalancha) se pueden confirmar comparando dos entradas ligeramente diferentes. Estas dos propiedades son precisamente lo que hace útiles a los hashes para comprobaciones de integridad de archivos y detección de alteración.
Compara el hash de la Práctica 1 con un valor recalculado y con un valor con el último carácter cambiado.
① Repite los pasos de la Práctica 1 para meter el SHA-256 de "Hello, Python!" en sha.
② Hashea la misma entrada otra vez y comprueba si es igual a sha — imprime como Igual al recalcular: True / False.
③ Calcula el hash de los bytes con ! cambiado por . al final y confirma que difiere de sha — imprime como Distinto tras un carácter: True / False.
Editor Python
Ejecutar el código para ver el resultado
QUIZ
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 1¿Cuál es la longitud de la cadena devuelta por hexdigest() de SHA-256?
Pregunta 2¿Qué pasa con el SHA-256 de la misma entrada?
Pregunta 3¿Puedes recuperar la entrada original desde un hash?
Pregunta 4¿Cuál es la mejor opción para almacenar contraseñas de usuarios?