2012-06-12 5 views
0

암호와 사용자 이름을 묻는 약간의 프로그램을 만들었습니다. 세부 정보를 입력 한 후 암호와 사용자 이름이 올바른지 확인해야합니다. 어떻게 접근하고 그렇게합니까?암호와 사용자 이름 입력이 파이썬에서 일치하는지 확인하십시오.

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"