0Pricing
Cryptology Academy · Aula

Visão geral da biblioteca de criptografia do Python

Configure primitivas hazmat e de alto nível; compreenda a estrutura da biblioteca.

Visão geral da biblioteca de criptografia do Python é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

Por que usar a biblioteca cryptography?

A biblioteca Python cryptography (da PyCA) fornece uma interface Fernet de alto nível e primitivas hazmat de baixo nível. Ela encapsula o OpenSSL e é o padrão da comunidade para criptografia de produção em Python.

Instalação e estrutura

Instale: pip install cryptography. Duas camadas: cryptography.fernet (criptografia simétrica segura e opinativa) e cryptography.hazmat.primitives (AES, RSA, EC, funções de hash, HMAC — use com cuidado).

Fernet: criptografia simétrica segura

Fernet usa AES-128-CBC + HMAC-SHA256 com um carimbo de data e hora. Ele gerencia automaticamente a geração do IV, o preenchimento e o MAC. É perfeito para criptografar valores de configuração, tokens ou pequenos blocos de dados.

from cryptography.fernet import Fernet

# Generate a URL-safe base64-encoded 32-byte key
key = Fernet.generate_key()
f = Fernet(key)

token = f.encrypt(b"my secret data")
print("Encrypted:", token[:40], "...")

plain = f.decrypt(token)
print("Decrypted:", plain)

Primitivas hazmat: funções de hash

A camada hazmat fornece SHA-2, SHA-3, BLAKE2 e muito mais:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend

digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(b"Hello, ")
digest.update(b"world!")
result = digest.finalize()
print("SHA-256:", result.hex())

Primitivas hazmat: HMAC

HMAC para autenticação de mensagens:

from cryptography.hazmat.primitives import hmac, hashes
import os

key = os.urandom(32)
h = hmac.HMAC(key, hashes.SHA256())
h.update(b"authenticated message")
signature = h.finalize()
print("HMAC-SHA256:", signature.hex())

# Verify
h2 = hmac.HMAC(key, hashes.SHA256())
h2.update(b"authenticated message")
h2.verify(signature)  # raises if invalid

Serialização de chaves

Serializar chaves em PEM/DER para armazenamento ou transmissão:

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
)
print(pem[:60])

Carregamento de chaves a partir de PEM

Carregar uma chave PEM do disco:

from cryptography.hazmat.primitives.serialization import load_pem_private_key

with open("private_key.pem", "rb") as f:
    pem_data = f.read()

key = load_pem_private_key(pem_data, password=b"passphrase")
print("Key loaded, size:", key.key_size, "bits")

Manipulação de certificados X.509

Analisar e inspecionar certificados TLS:

from cryptography import x509
import datetime

with open("cert.pem", "rb") as f:
    cert = x509.load_pem_x509_certificate(f.read())

print("Subject:", cert.subject)
print("Issuer:", cert.issuer)
print("Not valid after:", cert.not_valid_after_utc)
print("Serial:", cert.serial_number)

Geração de bytes aleatórios

Use sempre os.urandom ou secrets para obter aleatoriedade criptográfica:

import os, secrets

# Cryptographically secure 32-byte key
key = os.urandom(32)
print("Random key:", key.hex())

# secrets module: URL-safe token
token = secrets.token_urlsafe(32)
print("URL-safe token:", token)

Como evitar armadilhas da camada hazmat

A API hazmat é chamada de "Materiais Perigosos" por um motivo. Erros comuns: reutilizar nonces, usar o modo ECB, ignorar tags de autenticação e comparar MACs com ==. Use APIs de alto nível sempre que possível.

Verificação de conhecimento

O que a criptografia Fernet fornece que o AES-CBC bruto, por si só, não fornece?

Recapitulação da lição

A biblioteca cryptography tem duas camadas: Fernet, segura, e hazmat, flexível. Use Fernet para criptografia simétrica e hazmat para AES-GCM, RSA, ECDSA e manipulação de certificados. Use sempre os.urandom para as chaves. Evite as armadilhas da camada hazmat — prefira modos autenticados.

Perguntas Frequentes

A aula “Visão geral da biblioteca de criptografia do Python” é grátis?

Sim — o texto completo de “Visão geral da biblioteca de criptografia do Python” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “Visão geral da biblioteca de criptografia do Python”?

Configure primitivas hazmat e de alto nível; compreenda a estrutura da biblioteca. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Visão geral da biblioteca de criptografia do Python”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Visão geral da biblioteca de criptografia do Python
  2. Encriptação e desencriptação AES-GCM em Python
  3. Pares de chaves RSA e ECDSA em Python
  4. Armadilhas comuns de criptografia em Python e padrões seguros
← Voltar para Cryptology Academy