bcrypt – hash de senhas em Python: segurança e boas práticas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução

Proteger as senhas dos usuários é uma tarefa essencial no desenvolvimento de software moderno. Em uma era de ameaças cibernéticas crescentes, o uso de funções hash simples ou desatualizadas, como MD5 ou SHA-1, cria sérios riscos de segurança. Esses algoritmos são facilmente vulneráveis a ataques de rainbow tables e possuem alta velocidade de computação, tornando-os frágeis diante de métodos modernos de invasão.

O bcrypt é uma função hash criptográfica adaptativa, projetada especificamente para o armazenamento seguro de senhas. Criado em 1999 por Niels Provos e David Mazières, este algoritmo é baseado na cifra Blowfish e inclui um sistema de salt embutido, tornando-o extremamente resistente a diversos tipos de ataques.

No ecossistema Python, o bcrypt está disponível através da biblioteca de mesmo nome, que é um wrapper Python da implementação original do OpenBSD. Esta biblioteca é usada por milhões de desenvolvedores em todo o mundo e é considerada o padrão ouro para hash de senhas em aplicações Python.

O que é a biblioteca bcrypt

A biblioteca bcrypt para Python é uma ferramenta confiável e testada pelo tempo para hash criptográfico de senhas. Ela funciona como um wrapper Python sobre a implementação original em C do bcrypt, garantindo alta performance e confiabilidade.

Principais características do bcrypt

Adaptabilidade: A principal força do bcrypt está em sua natureza adaptativa. O parâmetro "cost factor" permite aumentar a complexidade dos cálculos conforme o poder computacional cresce, garantindo proteção a longo prazo.

Salt embutido: Cada hash inclui automaticamente um salt único, eliminando a possibilidade de uso de rainbow tables para quebrar senhas.

Resistência criptográfica: O uso do algoritmo Blowfish com múltiplas rodadas de criptografia oferece um alto nível de proteção criptográfica.

Padronização: O bcrypt segue um formato padronizado, garantindo compatibilidade entre diferentes implementações e plataformas.

Instalação e configuração

Instalação via pip

A instalação da biblioteca bcrypt é feita da forma padrão através do gerenciador de pacotes pip:

pip install bcrypt

Requisitos do sistema

A biblioteca bcrypt tem requisitos mínimos de sistema:

  • Python 3.6 ou superior
  • Sistemas operacionais suportados: Windows, macOS, Linux
  • Compilação automática de extensões C (requer um compilador instalado)

Verificando a instalação

Após a instalação, você pode verificar se a biblioteca está funcionando corretamente:

import bcrypt
print(bcrypt.__version__)

Fundamentos do uso do bcrypt

Como o algoritmo funciona

O bcrypt segue o seguinte esquema de funcionamento:

  1. Geração de um salt aleatório
  2. Aplicação do algoritmo Blowfish com um número definido de rodadas
  3. Criação do hash final, que inclui o salt e os parâmetros

Formato do hash de saída

O hash resultante do bcrypt tem a seguinte estrutura:

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW

Onde:

  • $2b$ — identificador da versão do algoritmo
  • 12 — parâmetro cost (número de rodadas)
  • R9h/cIPz0gi.URNNX3kh2O — salt (22 caracteres)
  • PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW — o hash em si (31 caracteres)

Início rápido

Exemplo básico de uso do bcrypt:

import bcrypt

# A senha deve estar em formato de bytes
password = b"supersecret123"

# Gerando o hash
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(f"Hash: {hashed}")

# Verificando a senha
if bcrypt.ch                    

Recommendations