AYUDA DE PYTHON

hashlib Python (Cómo Funciona: Una Guía para Desarrolladores)

El módulo hashlib en Python es una herramienta poderosa para trabajar con algoritmos de hash seguro y resumen de mensajes. Este módulo proporciona una interfaz estándar a muchos algoritmos de hash seguros, lo que lo convierte en una opción versátil para los desarrolladores que necesitan garantizar la integridad y seguridad de los datos. Más adelante en el artículo, también analizaremos una versátil biblioteca de generación de PDF de IronSoftware llamada IronPDF y escribiremos un script utilizando ambas bibliotecas para demostrar su uso.

Introducción

El módulo hashlib es parte de la biblioteca estándar de Python, por lo que no es necesario instalarlo por separado. Incluye varias funciones de hash criptográficas, como MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 y la serie SHA-3. Estas funciones se utilizan para crear objetos hash, que luego se pueden usar para generar hashes de datos.

Características principales

  1. Amplia gama de algoritmos: hashlib admite múltiples algoritmos de hash, incluidos algunos más antiguos como MD5 y SHA-1 y otros más modernos como SHA-256 y SHA-3.

  2. Interfaz sencilla: Cada algoritmo de hash tiene un método constructor que devuelve un objeto de hash. Este objeto puede alimentarse con datos usando el método update y producir el valor hash usando los métodos digest o hexdigest.

  3. Seguridad: Aunque algunos algoritmos como MD5 y SHA-1 tienen vulnerabilidades conocidas, hashlib incluye opciones más seguras como SHA-256 y SHA-3.

Instalación

hashlib es un módulo incorporado y no requiere instalación explícita.

Uso básico

Aquí tienes un ejemplo sencillo de cómo usar hashlib para generar un hash SHA-256 utilizando el constructor de hash de hashlib:

import hashlib
# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from IronSoftware is Awesome')
# Get the hexadecimal representation of the hash in  bytes object
hash_hex = hash_object.hexdigest() # hash_hex is digest object
print(hash_hex) # byte string
#Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
py
PYTHON

Funciones avanzadas

  • Soporte para Multithreading: Con la función de hash criptográfico, hashlib libera el Global Interpreter Lock (GIL) mientras calcula un hash si se suministran más de 2047 bytes de datos de una sola vez, permitiendo un mejor rendimiento en aplicaciones multithreaded.
  • Algoritmos de Hash Personalizados: Si la distribución de Python de su sistema está vinculada a una compilación de OpenSSL que proporciona algoritmos adicionales, puede acceder a ellos a través del método new().

Varios tipos de hash utilizando el módulo HashLib

1. Hashing Simple

import hashlib
# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
#output
SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
py
PYTHON

El código genera SHA-256 para los datos de entrada proporcionados

2. Uso de Diferentes Tamaños de Resumen

import hashlib
# Hashing with different digest sizes
data = b'Hello, World!' # convert to binary data
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
#output hash digest with only hexadecimal digits
MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
py
PYTHON

El código genera hashes para md5, sha256 y sha512 utilizando los datos proporcionados.

3. Hashing con clave

import hashlib
from hashlib import blake2b
# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
#output
3d363ff7401e02026f4a4687d4863ced
py
PYTHON

4. Hashing aleatorio

import hashlib
import os
# Randomized hashing example (Salsa20)
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
#output
Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
py
PYTHON

Estos ejemplos cubren el hashing básico utilizando diferentes tamaños de resumen. Se pueden realizar ajustes según requisitos o preferencias específicos, como el uso de diferentes algoritmos o parámetros.

Aplicaciones prácticas

  1. Integridad de Datos: Las funciones hash se utilizan generalmente para confirmar la integridad de los registros. Al comparar el hash de los datos originales con el hash de los datos recibidos, puedes asegurar que los datos no han sido alterados.

  2. Almacenamiento de contraseñas: Las funciones hash se usan a menudo para almacenar contraseñas de manera segura. El sistema almacena el hash de la contraseña en lugar de la contraseña real. Cuando un usuario inicia sesión, el hash de la contraseña ingresada se compara con el hash almacenado.

  3. Firmas Digitales: Las funciones hash se utilizan comúnmente para crear firmas digitales, que verifican la autenticidad e integridad de un mensaje.

Presentación de IronPDF

hashlib Python ((Cómo funciona: Una guía para desarrolladores)): Figura 1 - IronPDF for Python: La biblioteca PDF de Python

IronPDF es una potente biblioteca de Python para crear, editar y firmar PDFs utilizando HTML, CSS, imágenes y JavaScript. Proporciona capacidades de alto rendimiento con un uso mínimo de memoria. Los usuarios pueden generar PDF desde HTML, fusionar o dividir documentos PDF, extraer texto e imágenes de PDFs, aplicar marcas de agua, rasterizar un PDF a formatos de imagen como JPEG y PNG, encriptar archivos PDF, y más. IronPDF ofrece una amplia gama de operaciones con PDF.

Principales características de IronPDF

Conversión de HTML a PDF

Los usuarios pueden convertir archivos HTML, cadenas HTML y URLs a PDFs. Por ejemplo, renderizar una página web como un PDF usando el renderizador PDF de Chrome de IronPDF.

Soporte multiplataforma

IronPDF está diseñado para versiones de Python 3+ y se ejecuta en Windows, Mac, Linux o plataformas en la nube.

IronPDF también está disponible en .NET, Java, Python, y Node.js.

Edición y firma

El usuario puede establecer propiedades, agregar seguridad con contraseñas y permisos y aplicar firmas digitales a PDFs utilizando IronPDF.

Plantillas de página y configuración

IronPDF le permite personalizar documentos PDF con encabezados, pies de página, números de página y márgenes ajustables. También admite diseños responsivos y tamaños de papel personalizados.

Cumplimiento de las normas

El paquete de IronPDF también cumple con los estándares PDF como PDF/A y PDF/UA. Es compatible con la codificación de caracteres UTF-8 y maneja activos como imágenes, CSS y fuentes.

Generar documentos PDF usando IronPDF y el módulo HashLib

Requisitos previos de IronPDF

  1. IronPDF utiliza .NET 6.0 como su tecnología subyacente. Por lo tanto, asegúrate de que el runtime de .NET 6.0 esté instalado en tu sistema.

  2. Python 3.0+: Necesita tener instalada la versión 3 o posterior de Python.

  3. Pip: Instala el instalador de paquetes de Python pip para instalar el paquete IronPDF.

    Para comenzar, vamos a crear un archivo Python para agregar nuestros scripts. Para este ejemplo, usaremos Visual Studio Code como editor de código.

    Abre Visual Studio Code y crea un archivo, hashlibDemo.py.

    Instalar la biblioteca IronPDF:

pip install ironpdf
pip install ironpdf
SHELL

A continuación, agregue el siguiente código para demostrar el uso de los paquetes de Python IronPDF y Hashlib

import hashlib
import os
from hashlib import blake2b
from ironpdf import * 
# Apply your license key
License.LicenseKey = "your key"
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from IronSoftware is Awesome</p>"
content += "<h2> Simple hashing example</h2>"
content += "<p></p>"
# Simple hashing example
data = b'IronPDF from IronSoftware is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"
content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"
# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"
# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"
#Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
py
PYTHON

Código Explicación

El código proporcionado muestra el uso de varias técnicas de hash utilizando la biblioteca `hashlib` de Python:

  1. Ejemplo sencillo de hash: Calcula el hash SHA-256 de una cadena de datos específica (`b'IronPDF from Iron Software is Awesome").

  2. Hashing con Diferentes Tamaños de Resumen: Esta sección demuestra el hashing utilizando los algoritmos MD5, SHA-256 y SHA-512 en la misma cadena de datos. Ejemplo de Hashing con Clave: Este ejemplo utiliza la función de hash `blake2b` con una clave especificada (`b'pseudorandom key") para realizar hashing con clave en los datos.

  3. Ejemplo de Hashing Aleatorio: Utiliza el algoritmo PBKDF2-HMAC con SHA-256 para generar un hash aleatorio con una sal generada al azar. 5. Generación de PDF: Después de demostrar los ejemplos de hashing, el código genera un documento PDF usando IronPDF, que incluye el contenido HTML que muestra los ejemplos de hashing.

    Cada ejemplo ilustra diferentes aspectos del hash criptográfico, como el hash estándar, el hash con clave y las técnicas de hash aleatorias.

Salida

hashlib Python ((Cómo funciona: una guía para desarrolladores)): Figura 2 - Ejemplo de salida de consola

PDF

hashlib Python (Cómo Funciona: Una Guía para Desarrolladores): Figura 3 - Ejemplo de salida PDF usando IronPDF

Licencia IronPDF

hashlib Python ((Cómo funciona: Una guía para desarrolladores)): Figura 4 - Página de licencia de IronPDF

IronPDF funciona con la clave de licencia de Python. IronPDF for Python ofrece una clave de licencia de prueba gratuita para permitir a los usuarios probar sus amplias funciones antes de la compra.

Coloque la clave de licencia al inicio del script antes de usar el paquete de IronPDF:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
py
PYTHON

Conclusión

El módulo hashlib es esencial para la biblioteca estándar de Python, proporcionando funciones hash robustas y seguras para varias aplicaciones. Ya sea que esté asegurando la integridad de los datos, almacenando contraseñas de manera segura o creando firmas digitales, hashlib ofrece las herramientas necesarias. Por otro lado, IronPDF es una potente biblioteca para la generación y manipulación de PDF. Con ambas bibliotecas, los desarrolladores pueden generar rápidamente hashes y almacenarlos en formato PDF.

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.
< ANTERIOR
Seaborn Python (Guía de funcionamiento para desarrolladores)
SIGUIENTE >
XGBoost Python (Cómo funciona: Una guía para desarrolladores)

¿Listo para empezar? Versión: 2025.5 acaba de salir

Ver licencias >