如何在 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)。