如何隐藏或保护登录用户名和密码?

时间:2014-10-24 07:28:16

标签: python security python-3.x login passwords

我编写了这个简单的python(3.4.2)程序,但是我不知道如何才能确保用户名和密码的安全性,以便没人能看到它?


from tkinter import *

w=Tk()
w.title ("Login")

def login ():
    x=e1.get()
    y=e2.get()
    if x=='hamed' and y=='1371516':
        messagebox.showinfo (title='Login',message='Login successfuly')
        w.destroy()
    else:
        messagebox.showinfo (title='Error',message='username or password is wrong!')

l1=Label (w,text='Username',fg='red')
l1.grid(row=1,column=1)
l2=Label (w,text='Password',fg='red')
l2.grid(row=2,column=1,pady=5)

e1=Entry (w,width=20)
e1.grid(row=1,column=2)
e2=Entry (w,width=20,show="*")
e2.grid(row=2,column=2)

b1=Button (w,text='Ok',width=10,command=login)
b1.grid(row=3,column=1,sticky=W,ipadx=20)
b2=Button (w,text='Exit',width=10,command=w.destroy)
b2.grid(row=3,column=2,sticky=W,ipadx=20)

w.mainloop()

2 个答案:

答案 0 :(得分:0)

'安全'是什么意思?要在输入期间从屏幕隐藏密码,您可以使用getpass:

import getpass
credentials = {}
credentials['user'] = raw_input("Login: ")
credentials['password'] = getpass.getpass()

答案 1 :(得分:0)

为避免在代码或其他任何地方(例如数据库,文件等)以明文形式存储密码,请使用hash和salt。您将散列连接的密码和盐并存储如下:hashtype $ hash $ salt

hashtype = hash(plaintext|salt)

然后检查密码,您将连接相应的salt,哈希,并与存储的哈希类型进行比较。

我的建议是避免实现自己的哈希算法并使用经过验证的哈希算法,例如SHA

例如代码,您可以查看Django's Source code和相应的documentation。此外,在这里搜索Python中的密码哈希将为您提供一些很好的答案和示例。