Aprenda Python: Segurança e Criptografia de Senhas com Bcrypt

POR CÓDIGO DA HORA • 13 MARÇO 2026

A Importância da Segurança de Dados

Em um cenário de constantes vazamentos de dados, a responsabilidade de um desenvolvedor ao manipular senhas de usuários é imensa. Armazenar senhas em "texto puro" (como 'senha123') em um banco de dados é uma falha de segurança grave. Se o banco for invadido, todas as contas estarão expostas.

A solução profissional é o uso de Hashing. Diferente da criptografia comum, o hash é uma via de mão única: você consegue gerar um código a partir da senha, mas é matematicamente impossível reverter o código para a senha original.

O que é o Bcrypt?

O Bcrypt é uma das funções de hashing mais seguras e recomendadas. Ele utiliza um recurso chamado Salt (sal), que adiciona dados aleatórios à senha antes de gerar o hash, tornando ataques de "Dicionário" ou "Rainbow Tables" virtualmente inúteis.

Instalação

pip install bcrypt

🛠️ Implementando o Sistema de Hash

O código abaixo demonstra como transformar uma senha em um hash seguro e, posteriormente, como verificar se uma tentativa de login corresponde à senha armazenada.

import bcrypt

# 1. Cadastro: Transformando a senha em um Hash seguro
senha_usuario = "senha_secreta_123".encode('utf-8')

# Gerando o 'Salt' e o Hash
salt = bcrypt.gensalt()
hash_seguro = bcrypt.hashpw(senha_usuario, salt)

print(f"Senha Original: {senha_usuario.decode()}")
print(f"Hash Gerado para o Banco: {hash_seguro.decode()}")

print("\\n--- Simulação de Login ---")

# 2. Verificação: Conferindo se a senha digitada está correta
tentativa_senha = "senha_secreta_123".encode('utf-8')

if bcrypt.checkpw(tentativa_senha, hash_seguro):
    print("✅ Login autorizado! A senha é válida.")
else:
    print("❌ Senha incorreta. Acesso negado.")

Por que usar 'encode' e 'decode'?

Bibliotecas de segurança como o Bcrypt trabalham com bytes em vez de strings comuns. Por isso, usamos o .encode('utf-8'). Isso garante que caracteres especiais (como acentos) sejam processados corretamente em qualquer sistema operacional.

💼 Diferencial para Desenvolvedores Backend

Saber implementar Bcrypt é um requisito básico para vagas de Desenvolvedor Backend e Engenheiro de Segurança. Ao incluir essa funcionalidade em seus projetos Python, você demonstra que se preocupa com a LGPD (Lei Geral de Proteção de Dados) e com a privacidade dos seus usuários.