Python 中的getpass模块

发布时间:2022-07-24

有各种各样的 Python 程序,在这些程序中,我们必须使用密钥、密码短语或密码进行秘密交易,或者识别被授权执行某些活动的用户。在接受键的过程中,必须采取各种措施,不应该将该短语回显到屏幕上,禁止语句回显等等。Python 编程语言中的 getpass 模块提供了所有这些特性。 在接下来的教程中,我们将借助不同的示例详细讨论 Python getpass 模块,并了解其用途。

了解 Python getpass 模块

类似于 NumPy 和 Matplotlib 模块,getpass 也是 Python 编程语言的一个模块。getpass 模块要求用户输入密码而不回应,这意味着不显示用户正在输入的内容。 每当我们使用基于具有不同安全凭证的终端的应用,该终端在应用执行之前使用密码,那么它将使用 Python getpass 模块来完成。 Python 标准库的 getpass 模块大致定义了两个函数。只要基于终端的应用必须在用户凭证验证之后执行,这些功能就可以支持。 这些功能如下:

  1. getpass() 功能
  2. getuser() 功能

理解 getpass() 函数

在各种程序中,我们有安全的数据或程序,在这种情况下,我们利用一些秘密或密钥或密码来识别用户。使用 getpass() 函数,我们可以在 Python 程序中接受密码。 让我们用下面的例子来理解这一点: 示例:

# 导入 getpass 模块
import getpass
# 使用 getpass() 函数
my_pass = getpass.getpass(prompt='Input the Password:')
# 使用 if-else 条件语句
if my_pass == 'Admin':
    print('The key is Unlocked!')
else:
    print('You\'ve entered an invalid password!')

输出:

Input the Password:
# 输入的值是 Admin
The key is Unlocked!

说明:
在上面的代码片段中,我们导入了 getpass 模块,并创建了一个变量,该变量使用 getpass 模块的 getpass() 函数来存储键值。然后,我们使用 if-else 条件语句来检查输入值是否与变量中的值匹配,如果匹配,则为用户解锁。 现在让我们借助例子来理解 getpass() 函数的不同用法。

getpass() 函数,没有提示

在下面的示例中,我们将了解如何从用户那里获取密码,并在没有提示的情况下返回相同的密码。 示例:

# 导入 getpass 模块
import getpass
# 使用 getpass() 函数,不带提示
my_pass = getpass.getpass()
# 打印语句
print("Entered password:", my_pass)

输出:

Password:
# 输入的值是 Admin
Entered password: Admin

说明:
在上面的代码片段中,我们导入了 getpass 模块,并定义了一个使用 getpass() 的变量。这里,我们没有指定任何参数。然后,我们为用户打印了一份声明。

带提示的 getpass() 函数

如果用户在登录前需要一些信息,如安全问题,我们将利用 getpass() 函数中的提示属性。 让我们考虑下面的例子来理解同样的事情。 示例:

# 导入 getpass 模块
import getpass
# 使用带提示的 getpass() 函数
my_pass = getpass.getpass(prompt="What is your birthplace?:")
# 使用 if-else 条件语句
if my_pass == 'Ohio':
    print("Unlock! Welcome back Dani.")
else:
    print("Your password is invalid!")

输出:

What is your birthplace?:
# 输入的值是 Ohio
Unlock! Welcome back Dani.

说明:
在上面的代码片段中,我们导入了 getpass 模块。然后我们定义了一个变量,该变量使用 getpass() 函数和提示参数来包含一些消息。然后,我们使用 if-else 条件语句检查输入的密码值是否与程序中存储的值匹配,并打印相应的语句。

getpass() 函数与其他流一起使用

该功能使程序员能够流式传输用户输入的密码。让我们借助下面给出的例子来理解这一点: 示例:

# 导入 getpass 和 sys 模块
import getpass
import sys
# 使用带 stream 的 getpass() 函数
my_pass = getpass.getpass(stream=sys.stderr)
# 打印语句
print("Entered Password:", my_pass)

输出:

Password:
# 输入的值是 Admin
Entered Password: Admin

说明:
在上面的代码片段中,我们导入了 getpass 模块和 sys 模块。然后我们定义了一个使用 getpass() 函数的变量,该函数接受 sys.stderr 流作为函数的参数。然后,我们打印了一份声明,向用户询问密码。

理解 getuser() 函数

getuser() 函数返回用户的系统登录名。这个函数检查计算机的环境变量。它获取用户的名称并返回一个字符串,如果找不到环境变量,就会引发异常。 让我们考虑一个基于 getuser() 函数检索计算机用户名的例子。 示例:

# 导入 getpass 模块
import getpass
# 使用 getuser() 函数
my_user = getpass.getuser()
# 打印值
print("Username:", my_user)

输出:

Username: Mango

说明:
在上面的代码片段中,我们导入了 getpass 模块,并使用了 getuser() 函数来检索存储在系统中的用户名。 现在,让我们考虑另一个使用 getuser()getpass() 函数获取用户名和密码的例子。 示例:

# 导入 getpass 模块
import getpass
# 使用 getuser() 和 getpass() 函数
my_user = getpass.getuser()
my_pass = getpass.getpass("Enter Password:")
# 打印值
print("Username:", my_user)
print("Password:", my_pass)

输出:

Enter Password:
# 输入的值是 Admin
Username: Mango
Password: Admin

说明:
在上面的代码片段中,我们导入了 getpass 模块,并定义了使用 getuser()getpass() 函数获取用户名和密码的变量。然后,我们为用户打印了这些值。