Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En la era de la transformación digital, nunca se insistirá lo suficiente en la importancia de contar con mecanismos criptográficos sólidos. La criptografía garantiza la seguridad y la privacidad de los datos a medida que atraviesan diversas redes y sistemas. PyCryptodome es una librería Python que destaca en el panorama criptográfico, ofreciendo una plétora de funcionalidades para facilitar el manejo seguro de datos, como modos de cifrado autenticado(GCM, CCM, EAX, SIV, OCB) y AES acelerado con soporte de primera clase. Este artículo profundiza en la última versión oficial de PyCryptodome, explorando sus características, casos de uso, proceso de instalación simplificado, y cómo puede ser utilizado eficazmente en diversas aplicaciones. También crearemos archivos PDF encriptados utilizando una biblioteca independiente de C#, IronPDF, con PyCryptodome.
PyCryptodome es un paquete Python autónomo de primitivas criptográficas de bajo nivel. Fue diseñada para sustituir a la antigua biblioteca PyCrypto, abordando muchas de sus limitaciones y ampliando sus capacidades. Ofrece una amplia gama de algoritmos y protocolos criptográficos, lo que la convierte en una herramienta inestimable para los desarrolladores que necesitan implementar funciones de seguridad en sus aplicaciones.
Amplio soporte de algoritmos: PyCryptodome soporta una amplia gama de algoritmos criptográficos, incluyendo AES, RSA, DSA, y muchos más. Este amplio soporte garantiza que los desarrolladores puedan encontrar las herramientas necesarias para diversas necesidades criptográficas.
Facilidad de uso: La biblioteca está diseñada para ser fácil de usar, con una API clara y concisa que permite incluso a aquellos con conocimientos criptográficos limitados implementar funciones de seguridad de manera efectiva.
Mantenimiento Activo: A diferencia de su predecesor PyCrypto, PyCryptodome se mantiene activamente, con actualizaciones y mejoras regulares, asegurando la compatibilidad con las últimas versiones de Python y estándares de seguridad.
Autónomo: PyCryptodome no requiere dependencias externas, por lo que es fácil de instalar y utilizar en diferentes entornos.
Instalar PyCryptodome es un proceso sencillo, gracias a su naturaleza autocontenida. Puede instalarse mediante pip
, el instalador de paquetes de Python, utilizando el siguiente comando:
pip install pycryptodome
PyCryptodome está organizado en varios módulos, cada uno de ellos dedicado a diferentes aspectos de la criptografía. Comprender estos módulos es crucial para aprovechar la biblioteca con eficacia.
Las funciones hash son fundamentales para la criptografía, ya que permiten obtener un valor hash de tamaño fijo a partir de datos arbitrarios. PyCryptodome soporta varios algoritmos hash a través del módulo Crypto.Hash
.
from Crypto.Hash import SHA256
hash_object = SHA256.new(data=b'Hello, PyCryptodome!')
print(hash_object.hexdigest())
El cifrado simétrico utiliza la misma clave para cifrar y descifrar. El módulo Crypto.Cipher
de PyCryptodome soporta varios cifrados simétricos, incluyendo AES, DES y más.
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
key = get_random_bytes(16) # 16 bytes for AES-128
cipher = AES.new(key, AES.MODE_EAX)
data = b'Secret Message'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data)
# Decryption
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
try:
cipher.verify(tag)
print("The message is authentic:", plaintext)
except ValueError:
print("Key incorrect or message corrupted")
El cifrado asimétrico utiliza un par de claves: una clave pública para el cifrado y una clave privada para el descifrado. El módulo Crypto.PublicKey
de PyCryptodome proporciona soporte para RSA, DSA y ECC(Criptografía de curva elíptica).
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
key = RSA.generate(2048)
public_key = key.publickey()
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(b'Secret Message')
# Decryption
cipher = PKCS1_OAEP.new(key)
plaintext = cipher.decrypt(ciphertext)
print(plaintext)
Las funciones de derivación de claves generan claves criptográficas a partir de una contraseña o frase de contraseña. Esto es especialmente útil en el cifrado basado en contraseñas. PyCryptodome soporta PBKDF2, scrypt, y otros algoritmos de derivación de claves.
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
password = b'my secret password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)
print(key)
Los gestores de contraseñas se benefician de las funciones de derivación de claves de PyCryptodome para almacenar y recuperar de forma segura las contraseñas de los usuarios. Mediante el uso de algoritmos de derivación de claves fuertes como PBKDF2, los desarrolladores pueden garantizar que las contraseñas almacenadas sean resistentes a los ataques de fuerza bruta.
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES
# Derive a strong key from a password
password = b'user_password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)
# Encrypt the password before storing
cipher = AES.new(key, AES.MODE_EAX)
stored_password = b'ActualPassword'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(stored_password)
# Store ciphertext, nonce, salt, and tag securely
password_data = {
'ciphertext': ciphertext,
'nonce': nonce,
'salt': salt,
'tag': tag
}
# Decrypt the password when needed
key = PBKDF2(password, password_data['salt'], dkLen=32, count=1000000)
cipher = AES.new(key, AES.MODE_EAX, nonce=password_data['nonce'])
plaintext = cipher.decrypt(password_data['ciphertext'])
try:
cipher.verify(password_data['tag'])
print("The stored password is authentic:", plaintext)
except ValueError:
print("Key incorrect or password corrupted")
IronPDF es una potente biblioteca de generación de PDF para Python que permite a los desarrolladores crear, editar y manipular documentos PDF sin esfuerzo. Ofrece una amplia gama de funcionalidades, desde la conversión de HTML a PDF hasta la fusión de varios PDF, lo que la convierte en la opción ideal para automatizar los flujos de trabajo de documentos. Cuando se combina con PyCryptodome, una robusta biblioteca para operaciones criptográficas, los desarrolladores pueden añadir funciones seguras a sus documentos PDF, como cifrado y firmas digitales. Esta integración es especialmente útil para aplicaciones que requieren altos niveles de seguridad e integridad de los datos, como en entornos financieros, jurídicos o confidenciales.
Para instalar IronPDF, puede utilizar pip
, el gestor de paquetes de Python. He aquí cómo empezar:
pip install ironpdf
Tras la instalación, puede empezar a utilizar IronPDF para crear y manipular archivos PDF. A continuación se muestra un ejemplo sencillo que demuestra cómo crear un PDF con IronPDF y luego utilizar PyCryptodome para cifrarlo:
from ironpdf import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import os
renderer = ChromePdfRenderer()
pdfFromUrl = renderer.RenderUrlAsPdf("https://ironpdf.com/")
pdfFromUrl.SaveAs("output.pdf")
# Encrypt the PDF with AES
def encrypt_file(file_name, key):
cipher = AES.new(key, AES.MODE_CBC)
iv = cipher.iv
with open(file_name, 'rb') as f:
data = f.read()
encrypted_data = iv + cipher.encrypt(pad(data, AES.block_size))
with open(file_name + '.enc', 'wb') as f:
f.write(encrypted_data)
# Example usage
key = os.urandom(16) # AES key must be either 16, 24, or 32 bytes long
encrypt_file("output.pdf", key)
Este script muestra la creación de un PDF simple usando IronPDF y luego lo encripta usando AES de PyCryptodome, proporcionando una base para construir aplicaciones de manejo de PDF más complejas y seguras.
En conclusión, PyCryptodome es una potente y versátil librería Python que mejora significativamente las operaciones criptográficas para los desarrolladores, ofreciendo una amplia gama de algoritmos y una fácil integración con otras herramientas como IronPDF. Con su amplio conjunto de características, incluyendo soporte para modos de cifrado autenticado, cifrado simétrico y asimétrico, hashing y derivación de claves, PyCryptodome responde a las necesidades de las aplicaciones modernas que requieren medidas de seguridad robustas. Su facilidad de uso, su mantenimiento activo y su carácter autónomo lo convierten en una herramienta indispensable para implementar el tratamiento seguro de datos en diversos escenarios, desde la gestión de contraseñas hasta la generación y encriptación segura de documentos, garantizando la integridad y confidencialidad de los datos en un mundo cada vez más digital.
Para obtener más información sobre las licencias de IronPDF, consulte la página de licencias de IronPDF. Para saber más, consulta nuestro completo tutorial sobre la conversión de HTML a PDF.
9 productos API .NET para sus documentos de oficina