Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 28, 2023 13:28:13

Jonntchib
Зарегистрирован: 2023-06-28
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

нужно сделать шифрование паролей MD5 к базе данных

Здравствуйте, нужно очень сильно ваша помощь!
Есть готовая форма авторизации. При запуске приложения, создается база данных, эта база данных заполняется вручную через db browser. Ее нужно заполнить логинами и паролями. После этого нужно сделать так, чтобы пароли стали хэшироваными. Соответственно при вводе логина и пароля должно вылезти окошко, что авторизация прошла успешно.
Помогите пожалуйста
Ниже код

 from tkinter import *
import sqlite3
from tkinter import messagebox as mb
import hashlib
conn = sqlite3.connect('sotrudniki.db')
cur = conn.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS users(
    login TEXT,
    pswd TEXT);""")
cur.execute("SELECT * FROM users")
clr = "#072f41"
fg = "#ffffff"
entry ="#355e7e"
aut = Tk()
aut.title("Вход")
aut["bg"] = clr
aut.geometry('320x320')
aut.resizable(width=0, height=0)
def vhod():
    cur.execute("SELECT * FROM users WHERE login = '" + enlog.get() + "' AND pswd = '" + enpw.get() + "'")
    res1 = cur.fetchone()
    if res1 != None:
        mb.showinfo("Успешно", "Вы вошли!")
        aut.destroy()
    elif enlog.get() == "" or enpw.get() == "":
        mb.showerror("Не успех", "Логин или пароль не введены")
    
    else:
        mb.showerror("Не успех", "Логин или пароль введены не верно")
        enlog.delete(0, END)
        enpw.delete(0, END)
    
lb = Label(aut, text = "АВТОРИЗАЦИЯ", font = ("Times", 25), bg=clr, fg=fg)
lb.pack(pady=20)
lblog = Label(aut, text = "ЛОГИН", font = ("Times", 18), bg=clr, fg=fg)
lblog.pack()
enlog = Entry(aut, font = ("Times", 15), fg=fg, bg=entry)
enlog.pack()
lbpw = Label(aut, text = "ПАРОЛЬ",
                font = ("Times", 18), bg=clr, fg=fg)
lbpw.pack()
enpw = Entry(aut, font = ("Times", 15), fg=fg, bg=entry,
                show = "*")
enpw.pack()
bt = Button(aut, text = "Войти", font = ("Times", 25), fg=fg, bg=entry, width = 10, command = vhod)
bt.pack(pady = 25, padx = 10)
aut.mainloop()

Отредактировано Jonntchib (Июнь 28, 2023 13:29:11)

Офлайн

#2 Июнь 28, 2023 14:46:02

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

нужно сделать шифрование паролей MD5 к базе данных

Что значит стали хешированными?
Вот ты руками заполнил базу в ней есть допустим 2 колонки login password
в них данные
UserName Password123
Ты изначально должен в поле с паролем вносить его хеш а потом уже сверять через свою форму преобзразовав пароль в тот же хеш.
К примеру можно выполнить SQL запрос

 UPDATE Users
SET password = MD5(password);

но при следующем запуске он перешифрует сам себя - тогда можно добавить еще одну колонку типа pass_update
и обновлять и ее
 UPDATE Users
SET password = MD5(password), pass_update = 1 WHERE pass_update=0;

Вариантов море - но самый правильный либо вносить сразу хешированные данные
А в самом приложении просто так же перед сверкой полученные данные из поля пароль преобразуй в хеш



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version