Skip to content

Instantly share code, notes, and snippets.

@rmsaitam
Created February 26, 2024 19:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rmsaitam/8dd0b97bf878b83e510e03e8257652e7 to your computer and use it in GitHub Desktop.
Save rmsaitam/8dd0b97bf878b83e510e03e8257652e7 to your computer and use it in GitHub Desktop.
Script Python de exemplo de como deve ser criar e armazenar senhas de usuários no banco de dados
import bcrypt
import mysql.connector
# Função para conectar ao banco de dados MySQL
def conectar_mysql():
return mysql.connector.connect(
host="localhost",
user="root",
password="secret", # Senha configurada para o MySQL
database="safe_password" # Nome do banco de dados
)
# Função para criar um hash bcrypt da senha
def criar_hash(senha):
# Geração de um salt aleatório
salt = bcrypt.gensalt()
# Criação do hash da senha com o salt
hash_senha = bcrypt.hashpw(senha.encode('utf-8'), salt)
return hash_senha
# Função para armazenar a senha no banco de dados MySQL
def armazenar_senha(nome, email, senha):
conexao = None
try:
conexao = conectar_mysql()
cursor = conexao.cursor()
# Criar o hash da senha
hash_senha = criar_hash(senha)
# Inserir o usuário e a senha no banco de dados
cursor.execute("INSERT INTO usuarios (nome, email, senha) VALUES (%s, %s, %s)", (nome, email, hash_senha))
# Confirmar a transação
conexao.commit()
print("Senha armazenada com sucesso!")
except mysql.connector.Error as erro:
print("Erro ao armazenar a senha:", erro)
finally:
if conexao and conexao.is_connected():
cursor.close()
conexao.close()
# Função para verificar a senha no banco de dados MySQL
def verificar_senha(email, senha):
try:
conexao = conectar_mysql()
cursor = conexao.cursor()
# Buscar o hash da senha associado ao email
cursor.execute("SELECT senha FROM usuarios WHERE email = %s", (email,))
hash_senha = cursor.fetchone()[0]
# Verificar se a senha fornecida corresponde ao hash armazenado
if bcrypt.checkpw(senha.encode('utf-8'), hash_senha.encode('utf-8')):
print("Senha correta. Acesso permitido.")
else:
print("Senha incorreta. Acesso negado.")
except mysql.connector.Error as erro:
print("Erro ao verificar a senha:", erro)
finally:
if conexao.is_connected():
cursor.close()
conexao.close()
# Exemplo de uso da função para armazenar senha
nome = "Fulano"
email = "fulano@hotmail.com"
senha = "senha_segura123"
armazenar_senha(nome, email, senha)
verificar_senha(email, senha)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment