如何在 Python 中编写安全身份验证系统?
How can I code a secure authentication system in Python?
我想用一个简单的密钥(字符串)制作一个身份验证系统。如果密钥输入正确,则启动程序。
问题是,我不知道我是如何编码的,所以程序会检查密钥是否正确,但无法以用户身份查看代码。
有人可以帮助我吗?
一种使用安全 passwords/hashes 和身份验证的简单方法。将其调整到您的系统中并以此为基础工作:
生成密码:
>>> import b<rypt
>>> bcrypt.genpw(b"admin", salt=bcrypt.gensalt())
b'b$VQ/egr55zwN28OU8baZXlu.gLA3HjVJw5O2teDDmwcXyp3k1TR4dG
将 bcrypt.genpw()
的输出存储在任何类型的数据存储中(不带前导 b
并包含单引号 ('
)。
检查密码:
import getpass
import bcrypt
# Get your bcrypt hashed pw from any kind of data storage.
pwhash = open("hash.txt", "r", encoding="utf-8").strip()
# Read the users password/key/whatever
password = getpass.getpass("Enter your password: ")
# Check if entered password/key/whatever matches stored hash
authenticated = bcrypt.checkpw(password.encode(), pwhash.encode()
if authenticated:
print("You're autenticated!")
do_privileged_stuff(...)
else:
print("You're not allowed to be here!")
一个有趣、安全但可能不是很 user-friendly 的安全插件是 MFA/2FA 使用 totp/hotp 算法(参见 here)。
我想用一个简单的密钥(字符串)制作一个身份验证系统。如果密钥输入正确,则启动程序。
问题是,我不知道我是如何编码的,所以程序会检查密钥是否正确,但无法以用户身份查看代码。
有人可以帮助我吗?
一种使用安全 passwords/hashes 和身份验证的简单方法。将其调整到您的系统中并以此为基础工作:
生成密码:
>>> import b<rypt
>>> bcrypt.genpw(b"admin", salt=bcrypt.gensalt())
b'b$VQ/egr55zwN28OU8baZXlu.gLA3HjVJw5O2teDDmwcXyp3k1TR4dG
将 bcrypt.genpw()
的输出存储在任何类型的数据存储中(不带前导 b
并包含单引号 ('
)。
检查密码:
import getpass
import bcrypt
# Get your bcrypt hashed pw from any kind of data storage.
pwhash = open("hash.txt", "r", encoding="utf-8").strip()
# Read the users password/key/whatever
password = getpass.getpass("Enter your password: ")
# Check if entered password/key/whatever matches stored hash
authenticated = bcrypt.checkpw(password.encode(), pwhash.encode()
if authenticated:
print("You're autenticated!")
do_privileged_stuff(...)
else:
print("You're not allowed to be here!")
一个有趣、安全但可能不是很 user-friendly 的安全插件是 MFA/2FA 使用 totp/hotp 算法(参见 here)。