AYUDA DE PYTHON

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

Publicado en 19 de febrero, 2025
Compartir:

EnhashlibEl módulo en Python es una herramienta poderosa para trabajar con algoritmos de resumen de mensajes y hash seguros. 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 examinaremos una versátil biblioteca de generación de PDF deIronSoftwarellamadoIronPDFy escriba un script utilizando ambas bibliotecas para demostrar su uso.

Introducción

Enhashlibel módulo 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 Algoritmoshashlibsoporta múltiples algoritmos de hash, incluidos los más antiguos como MD5 y SHA-1 y los más modernos como SHA-256 y SHA-3.

  2. Interfaz simple: 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

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

Uso básico

A continuación se muestra un ejemplo sencillo de cómo utilizarhashlibpara generar un hash SHA-256 utilizando el constructor de hash 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
PYTHON

Funciones avanzadas

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

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
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
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
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
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 a menudo se utilizan 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 para Python

IronPDFes 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 puedengenerar PDF a partir de HTML, fusionar odividir Documentos PDF,extraer texto e imágenes de PDF, solicitarmarcas de agua, rasterizar un PDF a imagen formatos como JPEG y PNG,encriptar archivos PDFy mucho 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,convertir una página web en PDFutilizando el renderizador PDF de Chrome de IronPDF 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, Pythony**Nodo.js.

Edición y firma

El usuario puede establecer propiedades, añadir seguridad concontraseñas y permisosyaplicar firmas digitalesa PDFs usando IronPDF.

Plantillas de página y configuración

IronPDF le permite personalizar documentos PDF conencabezados, 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. AdmiteCodificació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 tecnología subyacente. Por lo tanto, asegúrese de queTiempo de ejecución de .NET 6.0 está instalado en su sistema.

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

  2. Pip: Instalar el gestor de paquetes de Pythonpip para instalar el paquete IronPDF.

    Para comenzar, vamos a crear un archivo Python para añadir nuestros scripts. Para este ejemplo, usamosCódigo de Visual Studio como editor de código.

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

    Instalar la biblioteca IronPDF:

pip install ironpdf

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")
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 de Hashing Simple: Calcula el hash SHA-256 de una cadena de datos específica(b'IronPDF de Iron Software es increíble).

  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 hash `blake2b` con una clave especificada.(clave pseudorrandomizada)para realizar el 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 aleatoriamente. 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 utilizando IronPDF

Licencia IronPDF

hashlib Python((Cómo funciona: una guía para desarrolladores)): Figura 4 - página de licencias de IronPDF

IronPDFfunciona 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 principio del script antes de utilizarPaquete IronPDF:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
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,IronPDFes una potente biblioteca de generación y manipulación de PDF. Con ambas bibliotecas, los desarrolladores pueden generar rápidamente hashes y almacenarlos en formato PDF.

Jordi Bardia

Jordi Bardia

Ingeniero de software

 LinkedIn |  Website

Jordi es más competente en Python, C# y C++, cuando no está aprovechando sus habilidades en Iron Software; está programando juegos. Compartiendo responsabilidades en las pruebas de productos, el desarrollo de productos y la investigación, Jordi añade un inmenso valor a la mejora continua de los productos. La variada experiencia le mantiene desafiado y comprometido, y dice que es uno de sus aspectos favoritos de trabajar con Iron Software. Jordi creció en Miami, Florida, y estudió Informática y Estadística en la Universidad de Florida.
SIGUIENTE >
XGBoost Python (Cómo funciona: Una guía para desarrolladores)