Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 105

bcrypt

Revisado porCybersecurity entrepreneur & security researcher

O que é bcrypt?

bcryptFunção adaptativa de hashing de palavras-passe baseada no cifrador Blowfish com fator de custo ajustável, projetada por Provos e Mazières em 1999.


O bcrypt é um esquema de hashing de palavras-passe publicado em 1999 por Niels Provos e David Mazières (artigo da USENIX "A Future-Adaptable Password Scheme"), que utiliza uma variante do key schedule do Blowfish ("EksBlowfish") para derivar um hash de 192 bits a partir de uma palavra-passe com salt. A dispendiosa fase de configuração de chave entrelaça o salt e a palavra-passe através de expansões de chave repetidas e, em seguida, cifra 64 vezes a cadeia constante "OrpheanBeholderScryDoubt". O seu parâmetro de custo — o log2 do número de rondas de configuração de chave — permite aos defensores aumentar o fator de trabalho à medida que o hardware evolui; um custo de 12 significa 2^12 = 4096 iterações.

Uma peculiaridade definidora é o limite rígido de 72 bytes de entrada do bcrypt: tudo o que ultrapassa o byte 72 é silenciosamente truncado. Foi isto que causou o incidente de outubro de 2024 na Autenticação Delegada AD/LDAP da Okta, em que a Okta construía uma chave de cache aplicando bcrypt a userId + username + password; para utilizadores com um nome de utilizador de 52 ou mais caracteres, a palavra-passe ficava para além do corte de 72 bytes e era ignorada, permitindo que uma credencial previamente em cache se autenticasse. A lição: pré-hashear as entradas longas (por exemplo, SHA-256 e depois Base64) antes do bcrypt, ou usar uma função sem esse limite.

A pegada de memória pequena e fixa do bcrypt também o torna mais fraco que os desenhos com custo de memória contra o cracking por GPU/ASIC. Continua aceitável com custo >= 12, mas a OWASP recomenda agora Argon2id (ou scrypt) para sistemas novos.

flowchart TD
  P[Password + 128-bit salt] --> T{Input > 72 bytes?}
  T -->|Yes| TR[Bytes 73+ silently truncated]
  T -->|No| K
  TR --> K[EksBlowfish key setup]
  K --> C[Cost: repeat key schedule 2^cost times]
  C --> E["Encrypt 'OrpheanBeholderScryDoubt' x64"]
  E --> H["$2b$12$salt + 184-bit digest"]

Exemplos

  1. 01

    Django e Spring Security armazenam palavras-passe com bcrypt em custo 12 por defeito.

  2. 02

    Um hash bcrypt típico começa com $2b$12$ seguido por um salt de 22 caracteres e um resumo de 31 caracteres.

Perguntas frequentes

O que é bcrypt?

Função adaptativa de hashing de palavras-passe baseada no cifrador Blowfish com fator de custo ajustável, projetada por Provos e Mazières em 1999. Pertence à categoria Criptografia da cibersegurança.

O que significa bcrypt?

Função adaptativa de hashing de palavras-passe baseada no cifrador Blowfish com fator de custo ajustável, projetada por Provos e Mazières em 1999.

Como se defender contra bcrypt?

As defesas contra bcrypt costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Quais são outros nomes para bcrypt?

Nomes alternativos comuns: Hash EksBlowfish, bcrypt de Provos-Mazières.

Termos relacionados

Ver também