![](/img/trans.png)
[英]Simple Python program to connect to a secure wifi network with user input credentials
[英]Secure login with Python credentials from user database
我喜欢使用Python创建安全登录名,但需要从数据库中检查用户表,以便多个用户可以使用自己的密码登录。 主要是这样,就像魅力一样工作,但是当然不能保证。
while True:
USER = input("User: ")
PASSWORD = getpass.getpass()
db = sqlite3.connect("test.db")
c = db.cursor()
login = c.execute("SELECT * from LOGIN WHERE USER = ? AND PASSWORD = ?", (USER, PASSWORD))
if (len(login.fetchall()) > 0):
print()
print("Welcome")
break
else:
print("Login Failed")
continue
因此,我尝试对密码进行哈希处理,当然也可以使用,但是后来我无法将其存储在数据库中进行检查,因此根本就没有检查。
from passlib.hash import sha256_crypt
password = input("Password: ")
hash1 = sha256_crypt.encrypt( password )
hash2 = sha256_crypt.encrypt( password )
print(hash1)
print(hash2)
import getpass
from passlib.hash import sha256_crypt
passwd = getpass.getpass("Please enter the secret password: ")
if sha256_crypt.verify( passwd, hash ):
print("Everything worked!")
else:
print("Try again :(")
我这样尝试过,以便密码哈希将从数据库中获取,但没有成功:
USER = input("User: ")
db = sqlite3.connect("test.db")
c = db.cursor()
hash = "SELECT HASH FROM LOGIN WHERE USER = %s"%USER
print(hash)
passwd = getpass.getpass("Password: ")
if sha256_crypt.verify( passwd, hash ):
print("Everything worked!")
else:
print("Try again :(")
所以我的问题是,为程序创建安全登录名的最佳方法是什么? 正如用户表中所述,我确实需要为不同的用户提供不同的登录名。 我以前在MySQL上做过,但是出于测试目的,我现在尝试在sql3上做。 所以没关系。 只要我知道该如何处理。
确实,您应该完全避免自己这样做。 有很多库可以正确实现这种身份验证。
尽管如此,遵循的模式是这样的:
(请注意,为了获得良好的安全性,您不仅需要使用现代的哈希算法,还应该使用salt )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.