Saltar al pie de página
AYUDA DE PYTHON

cryptography Python (Cómo Funciona Para Desarrolladores)

Cryptography es esencial para asegurar datos y comunicaciones en la era digital. Este paquete, con sus extensas bibliotecas, hace que la implementación de técnicas criptográficas sea sencilla. Una de las bibliotecas más populares para criptografía en Python es el paquete cryptography, que proporciona recetas criptográficas con interfaces de alto y bajo nivel. Más adelante en el artículo, también examinaremos una versátil biblioteca de generación de PDF llamada IronPDF de Iron Software.

Características principales

  1. Recetas de Alto Nivel: Cryptography incluye una capa de recetas criptográficas de alto nivel para tareas criptográficas comunes, como cifrado simétrico, cifrados simétricos, resúmenes de mensajes y funciones de derivación de claves. Las recetas de cifrado simétrico de alto nivel ayudan a implementar algoritmos complejos de manera rápida y sencilla.
  2. Interfaces de Bajo Nivel: También ofrece interfaces de bajo nivel para algoritmos criptográficos, permitiendo un control y personalización más detallados.
  3. Cifrado Simétrico y Asimétrico: La biblioteca admite algoritmos criptográficos comunes, incluidos los algoritmos de cifrado simétrico (p. ej., AES) y cifrado asimétrico (p. ej., RSA).
  4. Primitivas Criptográficas: La biblioteca estándar criptográfica incluye recetas y primitivas criptográficas para desarrolladores de Python, que incluyen primitivas para hashing, derivación de claves y códigos de autenticación de mensajes (MACs).
  5. Soporte al Desarrollador: Los desarrolladores pueden enviar informes de problemas y también ofrece una lista de correo para discusiones de desarrollo.

Instalación

Para instalar el paquete de cryptography, puedes usar pip:

pip install cryptography
pip install cryptography
SHELL

Uso básico

Aquí hay un ejemplo sencillo de cómo usar la biblioteca de cryptography para cifrado simétrico con el módulo Fernet:

from cryptography.fernet import Fernet

# Generate a key
key = Fernet.generate_key()
cipher_suite = Fernet(key)

# Encrypt a message
message = b"IronPDF is awesome"  # This must be a really secret message
cipher_text = cipher_suite.encrypt(message)
print(cipher_text)

# Decrypt the message
plain_text = cipher_suite.decrypt(cipher_text)
print(plain_text)
from cryptography.fernet import Fernet

# Generate a key
key = Fernet.generate_key()
cipher_suite = Fernet(key)

# Encrypt a message
message = b"IronPDF is awesome"  # This must be a really secret message
cipher_text = cipher_suite.encrypt(message)
print(cipher_text)

# Decrypt the message
plain_text = cipher_suite.decrypt(cipher_text)
print(plain_text)
PYTHON

En este ejemplo, generamos una clave, ciframos un mensaje y luego lo desciframos usando el módulo Fernet.

Resultado

cryptography Python (Cómo Funciona Para Desarrolladores): Figura 1

Casos de uso

  1. Encriptación de Datos: Encriptar datos sensibles antes de almacenarlos en una base de datos o transmitirlos por una red.
  2. Comunicación Segura: Asegurar que los mensajes intercambiados entre partes sean confidenciales y a prueba de manipulaciones.
  3. Autenticación: Verificar la integridad y autenticidad de los datos utilizando firmas criptográficas.

Presentando IronPDF

cryptography Python (Cómo Funciona Para Desarrolladores): Figura 2 - IronPDF: La Biblioteca de PDF para Python

IronPDF es una poderosa biblioteca de Python diseñada para crear, editar y firmar PDFs usando HTML, CSS, imágenes y JavaScript gracias a su soporte para estándares web modernos. Ofrece un rendimiento de calidad comercial con un bajo uso de memoria. Las características clave son:

Conversión de HTML a PDF: IronPDF puede convertir archivos HTML, cadenas HTML y URLs a PDFs. Por ejemplo, renderiza una página web como PDF utilizando el renderizador PDF de Chrome.

Soporte Multiplataforma: IronPDF está diseñado para Python 3+ y también 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: Usa IronPDF para establecer propiedades, añadir seguridad con contraseñas y permisos, y aplicar firmas digitales a tus PDFs.

Plantillas de Páginas y Configuración: Puedes personalizar PDFs con encabezados, pies de página, números de página, y márgenes ajustables con IronPDF. Además, soporta tamaños de papel personalizados y diseños responsivos.

Cumplimiento de Estándares: IronPDF cumple con los estándares PDF, incluidos PDF/A y PDF/UA, soporta codificación de caracteres UTF-8, y gestiona activos como imágenes, CSS, y fuentes.

Instalación

 pip install ironpdf

Generar documentos PDF utilizando IronPDF y criptografía.

Prerrequisitos

  1. Asegúrate de que Visual Studio Code esté instalado
  2. La versión 3 de Python esté instalada

Para empezar, crearemos un archivo Python para añadir nuestros guiones.

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

Instale las bibliotecas necesarias:

pip install cryptography
pip install ironpdf
pip install cryptography
pip install ironpdf
SHELL

Luego añade el siguiente código para demostrar el uso de los paquetes de IronPDF y cryptography para Python:

from cryptography.fernet import Fernet
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from an HTML string using Python
content = "<h1>Awesome IronPDF with Cryptography</h1>"

# Generate a key
content += "<h2>Generate a key</h2>"
key = Fernet.generate_key()
cipher_suite = Fernet(key)
content += "<p>Fernet.generate_key() = " + str(key) + "</p>"

# Encrypt a message
content += "<h2>Encrypt a message</h2>"
message = b"IronPDF is awesome"
cipher_text = cipher_suite.encrypt(message)
content += "<p>cipher_suite.encrypt(message)</p>"
content += "<p>" + str(cipher_text) + "</p>"

# Decrypt the message
content += "<h2>Decrypt the message</h2>"
plain_text = cipher_suite.decrypt(cipher_text)
content += "<p>cipher_suite.decrypt(cipher_text)</p>"
content += "<p>" + plain_text.decode() + "</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export to a file or Stream
pdf.SaveAs("Demo-cryptography.pdf")
from cryptography.fernet import Fernet
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from an HTML string using Python
content = "<h1>Awesome IronPDF with Cryptography</h1>"

# Generate a key
content += "<h2>Generate a key</h2>"
key = Fernet.generate_key()
cipher_suite = Fernet(key)
content += "<p>Fernet.generate_key() = " + str(key) + "</p>"

# Encrypt a message
content += "<h2>Encrypt a message</h2>"
message = b"IronPDF is awesome"
cipher_text = cipher_suite.encrypt(message)
content += "<p>cipher_suite.encrypt(message)</p>"
content += "<p>" + str(cipher_text) + "</p>"

# Decrypt the message
content += "<h2>Decrypt the message</h2>"
plain_text = cipher_suite.decrypt(cipher_text)
content += "<p>cipher_suite.decrypt(cipher_text)</p>"
content += "<p>" + plain_text.decode() + "</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export to a file or Stream
pdf.SaveAs("Demo-cryptography.pdf")
PYTHON

Explicación del código

Este fragmento de código demuestra cómo usar el módulo Fernet de la biblioteca cryptography para realizar el cifrado y descifrado de mensajes, y luego generar un documento PDF usando IronPDF. Aquí una explicación de cada parte del código:

  1. Importaciones y Configuración de Clave de Licencia:

    • Importa la clase Fernet del módulo cryptography.fernet para la funcionalidad de cifrado y descifrado.
    • Importa ChromePdfRenderer y License de IronPDF para la generación de PDF.
    • Configura la clave de licencia para IronPDF para habilitar sus características.
  2. Configuración de Contenido HTML: Inicializa la variable content con el marcado HTML que se incluirá en el documento PDF.

  3. Generar una Clave: Genera una nueva clave usando Fernet.generate_key() y crea un objeto de suite de cifrado Fernet (cipher_suite) con la clave generada. Incluye la clave generada en el contenido HTML.

  4. Cifrar un Mensaje: Define un mensaje (message) para cifrar (b"IronPDF es increíble"). Cifra el mensaje usando el método cipher_suite.encrypt() e incluye el texto cifrado en el contenido HTML.

  5. Descifrar un Mensaje: Descifra el cipher_text cifrado usando cipher_suite.decrypt() e incluye el texto plano descifrado en el contenido HTML.

  6. Generación de PDF: Usa ChromePdfRenderer para renderizar la cadena HTML content en un documento PDF. Guarda el archivo PDF generado como "Demo-cryptography.pdf".

Esta configuración permite crear un documento PDF que muestra las funcionalidades de cifrado y descifrado proporcionadas por la biblioteca cryptography, combinadas con las capacidades de generación de PDF de IronPDF.

Resultado

cryptography Python (Cómo Funciona Para Desarrolladores): Figura 3

PDF

cryptography Python (Cómo Funciona Para Desarrolladores): Figura 4

Licencia de IronPDF

IronPDF ofrece una clave de licencia de prueba para permitir que los usuarios prueben sus características extensas antes de la compra.

Coloca la clave de licencia al inicio del guión antes de usar el paquete IronPDF:

from ironpdf import License

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

# Apply your license key
License.LicenseKey = "key"
PYTHON

Conclusión

La biblioteca cryptography en Python es una herramienta poderosa para implementar encriptación y desencriptación segura de datos. Su facilidad de uso y características extensas lo hacen una excelente opción para los desarrolladores que buscan mejorar la seguridad de sus aplicaciones.

Por otro lado, IronPDF es una biblioteca de generación de PDF versátil y rica en características que ayudará a documentar los resultados de manera estándar. Ambas bibliotecas pueden obrar maravillas para los desarrolladores para mejorar sus habilidades.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más