A criptografia de senha mascara as senhas dos usuários, tornando-as difíceis de adivinhar ou decodificar. É uma etapa essencial no desenvolvimento de software seguro para usuários. Esteja você construindo um com o Flask ou outro framework Python leve, você não pode ignorar essa etapa. É aí que entra o bcrypt.
Mostraremos como usar bcrypt para hash sua senha em Python.
Como funciona o bcrypt
Bcrypt é uma biblioteca de hashing independente de linguagem que oferece criptografia de senha exclusiva. Ao criptografar sua string, ele gera caracteres aleatórios extras (sal) por padrão para aumentar a segurança de sua senha.
Opcionalmente, você também pode especificar o número de caracteres extras que deseja adicionar a uma string de entrada.
A biblioteca bcrypt não lê strings brutas - apenas código de bytes. Portanto, para começar, você primeiro codificará uma string de senha de entrada antes de passá-la para bcrypt para criptografar.
Codificar não é o mesmo que criptografar. Ele apenas garante que uma string se torne legível por máquina antes que um algoritmo de criptografia possa mascará-la.
Criptografando uma senha em Python com bcrypt
A criptografia de senha bcrypt é fácil com Python. Vamos nos concentrar em como fazer isso sem usar uma estrutura. Mas não se preocupe, ele segue o mesmo processo em estruturas, uma vez que você saiba como armazenar as entradas de seus usuários e lê-las no banco de dados.
Instalar e configurar o bcrypt
Se você ainda não fez isso, ativar um ambiente virtual Python na raiz do seu projeto. Em seguida, instale o bcrypt usando pip:
pip install bcrpyt
Comece a criptografar senhas
Depois de instalado, vamos ver como criptografar uma string usando bcrypt:
# Importar bcrypt:
importar bcrypt
senha = "mypasswordstring"
# Codifique a senha em um código de bytes utf-8 legível:
senha = senha.encode ('utf-8')
# Faça hash da senha ecodificada e gere um salt:
hashedPassword = bcrypt.hashpw (senha, bcrypt.gensalt ())
imprimir (hashedPassword)
Quando você execute o código Python acima, ele imprime uma string de byte criptografada. A saída, no entanto, muda cada vez que você executa o script. É assim que o bcrypt garante que cada usuário tenha uma senha criptografada de forma exclusiva.
A propósito, isso é para criptografia de senha.
Como comparar e confirmar senhas com bcrypt
E se você quiser armazenar a senha com hash e confirmar posteriormente se ela corresponde à senha fornecida pelo usuário durante a autenticação?
Isso é fácil. Você só precisa comparar a senha de autenticação com aquela armazenada no banco de dados (ou na memória, neste caso).
E como o bcrypt lê apenas strings de byte, você também precisará codificar a senha de autenticação antes de compará-la com a do banco de dados. Em essência, você fará uma verificação cruzada de uma entrada de autenticação codificada com a senha codificada com hash já armazenada em seu banco de dados.
Usando entradas Python fictícias, vamos ver como isso funciona na prática:
importar bcrypt
#store sua senha:
senha = str (input ("input password:"))
# Codifique a senha armazenada:
senha = senha.encode ('utf-8')
# Criptografar a senha armazenada:
hashed = bcrypt.hashpw (senha, bcrypt.gensalt (10))
# Crie um campo de entrada de senha de autenticação para verificar se um usuário insere a senha correta:
check = str (input ("verificar senha:"))
# Codifique a senha de autenticação também:
check = check.encode ('utf-8')
# Use condições para comparar a senha de autenticação com a armazenada:
if bcrypt.checkpw (verificar, hash):
imprimir ("login bem-sucedido")
outro:
imprimir ("senha incorreta")
O código acima pede que você insira uma nova senha ao executá-lo. Python armazena isso na memória. Em seguida, você fornecerá a mesma senha (conhecida apenas por você) no campo de autenticação.
O Python imprimirá uma mensagem de sucesso se a senha comparada corresponder à criptografada armazenada anteriormente. Caso contrário, ele produz a mensagem de falha embrulhada no outro demonstração:
Todo o conceito é o mesmo que armazenar uma senha em um banco de dados durante o registro e fornecê-la posteriormente durante a autenticação.
Criptografia de expansão com bcrypt
Embora só tenhamos demonstrado como o bcrypt funciona armazenando senhas criptografadas na memória curta simples do Python, seu uso final é em aplicativos baseados no usuário da vida real.
No entanto, este tutorial mostra as maneiras fundamentais de estruturar seu código para conseguir isso, mesmo em cenários da vida real. Por exemplo, se estiver usando o Flask, você pode substituir as entradas por formulários da web separados para servir os campos de registro e autenticação. E, claro, você armazenará senhas criptografadas em um banco de dados da vida real e lerá dele ao comparar senhas.
Todo mundo está falando sobre criptografia, mas se acha perdido ou confuso? Aqui estão alguns termos de criptografia de chave que você precisa saber.
Leia a seguir
- Programação
- Pitão
- Programação
- Segurança
Idowu é apaixonado por qualquer tecnologia inteligente e produtividade. Em seu tempo livre, ele brinca com programação e muda para o tabuleiro de xadrez quando está entediado, mas também adora quebrar a rotina de vez em quando. Sua paixão por mostrar às pessoas o caminho da tecnologia moderna o motiva a escrever mais.
Assine a nossa newsletter
Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!
Clique aqui para se inscrever