Você nunca deve manter uma senha em texto simples ao confirmar um usuário ou fazer algo semelhante.
Como muitas pessoas usam a mesma senha, se um invasor descobrir um banco de dados de senhas não criptografadas, elas podem ser facilmente usadas em conjunto com e-mails correspondentes para entrar no site ou conta vinculada e até mesmo para tentar acessar outras contas.
As senhas geralmente são hash hoje quando uma senha é fornecida. É aconselhável fazer hash com sal e manter o sal junto com a senha com hash.
Saltar pode parecer uma das etapas em uma receita para hash browns, mas em criptografia, refere-se à adição de dados aleatórios à entrada de uma função de hash para garantir que o hash sempre forneça um resultado único, mesmo que as entradas sejam idênticas.
Como resultado, o hash distinto criado pela adição do sal pode nos defender de vários métodos de ataque, incluindo ataques à tabela de hash, enquanto sufoca o dicionário e as tentativas offline de força bruta.
Aqui, com a ajuda de trechos de código, demonstraremos como usar 'bcrypt' para proteger suas senhas.
Então, o que é 'bcrypt'?
Bcrypt é uma biblioteca de hash que suporta vários idiomas e fornece criptografia de senha especial. Para aumentar a segurança de sua senha, ele produz automaticamente caracteres aleatórios adicionais (salt) ao criptografar sua string.
Você também pode optar por definir quantos caracteres adicionais deseja adicionar a uma string de entrada.
A biblioteca bcrypt lê apenas código de byte, não strings brutas. Portanto, antes de enviar uma string de senha de entrada para bcrypt para criptografia, você deve primeiro codificá-la.
Criptografia e codificação não são a mesma coisa. Ele apenas garante que uma string seja legível por máquina antes de ser coberta por uma técnica de criptografia.
Usando bcrypt para criptografar uma senha em Python
Python simplifica a criptografia de senha bcrypt. Vamos nos concentrar em fazer isso sem a ajuda de uma estrutura. Mas não se preocupe, se você entender como salvar entradas do usuário e lê-las do banco de dados, o procedimento é o mesmo em frameworks.
Instalação
Você só precisa configurar um ambiente virtual Python e, em seguida, utilizar um IDE como o PyCharm. A biblioteca deve então ser instalada primeiro:
Criptografia de senha
Vamos ver como usar o bcrypt para criptografar um texto depois de instalado:
O código Python mencionado acima executa e gera uma string de bytes criptografada. Mas toda vez que você executa o script, o resultado é diferente. O Bcrypt usa esse método para garantir que cada usuário tenha uma senha especificamente criptografada.
Isso, aliás, é para criptografia de senha.
Comparação e confirmação de senha usando Bcrypt
O que acontece se você deseja salvar a senha com hash e verificar mais tarde se ela corresponde à senha que um usuário enviou para autenticação?
Isso é simples. Apenas a senha de autenticação deve ser comparada com a entrada do banco de dados (ou na memória neste caso).
A senha de autenticação também deve ser codificada antes de ser comparada com a do banco de dados porque bcrypt só pode ler strings de bytes. Basicamente, você comparará uma entrada de autenticação codificada com a senha codificada com hash que você tem atualmente em seu banco de dados.
Vamos testar isso usando entradas fictícias do Python:
Ao executar o código mencionado acima, você será solicitado a fornecer uma nova senha. Isso é salvo na memória pelo Python. Na seção de autenticação, você digitará a mesma senha, que é privada para você.
Se a senha for comparada e aquela que foi criptografada anteriormente e salvou a correspondência, o Python emite uma mensagem de sucesso.
Caso contrário, a mensagem de erro é impressa e a sentença else é adicionada.
A idéia fundamental é idêntica à de registrar e fornecer uma senha a um banco de dados para autenticação.
Conclusão
Mesmo que tenhamos simplesmente usado senhas criptografadas para mostrar como o bcrypt funciona na memória curta simples do Python, sua aplicabilidade real está em aplicativos baseados em usuários.
No entanto, este artigo demonstra os métodos essenciais para organizar seu código para fazer isso, mesmo em circunstâncias do mundo real.
Por exemplo, se você estiver usando o Flask, poderá fornecer os campos de registro e autenticação por meio de formulários da Web separados em vez de entradas.
É claro que, ao comparar senhas, você lerá um banco de dados que contém senhas criptografadas que são mantidas no mundo real.
Jonas Nitsch
Obrigado por esta explicação simples e simples,
Isso me ajudou muito no meu projeto atual.
Acho muito bom que o código de exemplo seja limitado ao mínimo e não sobrecarregado como tantas outras explicações.
Cumprimentos