2012-06-12 6 views
0

Я сделал небольшую программу, которая должна запросить у вас пароль и имя пользователя. После того, как вы ввели свои данные, он должен проверить правильность пароля и имени пользователя. как я подхожу и делаю это?Проверьте, соответствует ли пароль и имя пользователя в Python?

from tkinter import * 
from getpass import getpass 

def callback(): 
    print(E1)() 

top = Tk() 
L1 = Label(top, text="User Name") 
L1.grid(row=0, column=0) 
E1 = Entry(top, bd = 5) 
E1.grid(row=0, column=1) 

L1 = Label(top, text="Password") 
L1.grid(row=1, column=0) 
E1 = Entry(top, bd = 5,show="•") 
E1.grid(row=1, column=1) 

MyButton1 = Button(top, text="Submit", width=10, command=callback) 
MyButton1.grid(row=3, column=1) 

top.mainloop() 
+0

Вы импортируете модуль getpass, но вы его не используете. Вы хотите знать, как его использовать, или вы хотите использовать свой собственный код Tk? – jedwards

+0

Ну, где и в какой форме вы храните правильный пароль или правильный хэш пароля? Вам нужно каким-то образом получить доступ к этой информации из вашей программы. –

+0

Да, я хотел бы знать, как использовать getpass, и я думал о сохранении пароля и имени пользователя в коде где-то. – EatMyApples

ответ

1

Вот какой код, который демонстрирует использование getpass и как проверить пароль, предоставленный пользователем, с хешированным паролем. Это игнорирует множество проблем, такие как засолки хэша, соответствующие места для хранения данных аутентификации, сколько пользователей нужно поддерживать и т.д.

import getpass, hashlib 

USER = 'ali_baba' 
# hashlib.md5('open sesame').hexdigest() 
PASSWORD_HASH = '54ef36ec71201fdf9d1423fd26f97f6b' 

user = raw_input("Who are you? ") 
password = getpass.getpass("What's the password? ") 
password_hash = hashlib.md5(password).hexdigest() 

if (user == USER) and (password_hash == PASSWORD_HASH): 
    print "user authenticated" 
else: 
    print "user authentication failed" 

Если вы не хотите, чтобы сохранить имя пользователя в коде, вы могли бы сделайте это:

# hashlib.md5('ali_baba:open sesame').hexdigest() 
AUTH_HASH = '0fce635beba659c6341d76da4f97212f' 
user = raw_input("Who are you? ") 
password = getpass.getpass("What's the password? ") 
auth_hash = hashlib.md5('%s:%s' % (user, password)).hexdigest() 
if auth_hash == AUTH_HASH: 
    print "user authenticated" 
else: 
    print "user authentication failed"