您当前的位置 :三板富> 科技 > 正文
如何在 Python 中隐藏和加密密码?
2022-02-19 21:16:04 来源:程序那点事官方百家号 编辑:news2020

有多种 Python 模块用于隐藏用户输入的密码,其中一个是**maskpass()模块。在 Python 中,借助maskpass()模块和base64()**模块,我们可以在输入时使用星号(*) 隐藏用户的密码,然后借助 base64() 模块可以对其进行加密。

maskpass()

maskpass() 是一个 Python 模块,可用于在输入期间隐藏用户的密码。maskpass() 模块还提供了一种安全的方式来处理程序通过终端与用户交互的密码提示。

安装:

在命令提示符下使用pip安装 maskpass。

pip install maskpass

这些模块有两种类型的功能/方法:

askpass()

advpass()

askpass():

askpass 使用标准库获取非阻塞输入并返回密码。

import maskpass pwd = maskpass.askpass()

上述代码执行将以字符串格式返回输入的密码。askpass() 方法中有 2 个可选参数,分别是“提示”和“掩码”。提示的默认值为“输入密码:”,掩码的默认值为星号 (*)。

注意:如果您想用字符串、数字或符号来掩盖您的密码,那么只需在掩码中传递该值。例如,如果你想用井号(#) 屏蔽你的密码,然后在掩码中传递井号,即 mask=”#”,现在当用户输入密码时,该密码将用井号(#) 隐藏。

示例 1:没有在提示中回显用户的密码

# 不回显的用户密码import maskpass # 隐藏密码 # 屏蔽密码pwd = maskpass.askpass(mask="") print(pwd)

输出:

F:\files>python password.py Enter Password : haiyong

在上面的例子中,用户的密码在输入密码时没有在提示中回显,因为掩码中分配的值是空的,即掩码=””(无空格),因此密码被隐藏,没有任何字符串、符号。

示例 2:在提示中回显用户的密码

# 回显密码并用井号标签 (#) 屏蔽import maskpass # importing maskpass library# prompt msg = Password and# 用井号(#)屏蔽密码pwd = maskpass.askpass(prompt="Password:", mask="#")print(pwd)

输出:

F:\files>python password.py Password:############### haiyong

在上面的例子中,用户的密码在输入密码时会在提示中回显,因为掩码中分配的值是hashtag(#)即 mask=”#” 因此当用户输入密码时,它会被隐藏井号(#)。

advpass():

advpass 使用 pynput 获取文本并返回密码。advpass 在控制台和 Spyder 中都可以使用。

import maskpass pwd = maskpass.advpass()

上面的代码执行也会以字符串格式返回输入的密码。advpass() 方法中有 4 个可选参数,它们是 "prompt"、"mask"、"ide" 和 "suppress"。

这里提示的默认值也是“输入密码:”

掩码的默认值为星号 (*)。

这里ide需要一个布尔值,即 true 或 false,ide 的默认值为False。不需要更改 ide 的值,因为它会自动检查它是在 IDE 还是在终端上运行。

suppress还需要一个布尔值,即 true 或 false,仅在 Spyder IDE 中使用。将此设置为 True 可防止将输入传递给系统的其余部分。这可以防止 Spyder 控制台在按下空格键时跳下。抑制的默认值为True。

advpass() 方法有一个显示功能,当按下 Left-Ctrl 键时,它将切换用户输入密码的可见性。再次按 Left-Ctrl 键以屏蔽/隐藏密码。注意:这仅适用于 advpass() 并且需要 pynput。

示例 1:输入密码时不按左 ctrl 键

# 输入密码而不用左 CTRL 键import maskpass # importing maskpass library# 屏蔽密码pwd = maskpass.advpass()print("Password : ", pwd)

输出:

F:\files>python password.py Enter Password: *************** Password : haiyong

在上面的输出中,密码用星号(*)符号隐藏,因为用户没有按下键盘上的左 ctrl 键。

示例 2:在输入密码的同时按下左 ctrl 键:

# 输入密码而不用左 CTRL 键

import maskpass # importing maskpass library

pwd = maskpass.advpass() # masking the password

print("Password : ", pwd)

输出:

F:\files>python password.py Enter Password: haiyong Password : haiyong

在上面的输出中,密码没有隐藏,因为用户按下了键盘上的左 ctrl 键。

base64()

base64 编码和解码功能都需要一个类似字节的对象。要将字符串转换为字节,我们必须使用 Python 的内置编码函数对字符串进行编码。主要使用 UTF-8 编码,您也可以使用 "ASCII" 进行编码,但我建议使用 UTF-8 编码。

# encoding the stringstring = "haiyong"# encoding string with utf-8b = string.encode("UTF-8")print(b)

输出:

F:\files>python strencode.py b"greeksforgreek"

这里b前缀表示该值是一个字节对象。

使用 base64() 模块对字符串进行编码:

要对字符串进行编码,即将字符串转换为字节码,请使用以下方法:

base64.b64encode("string".encode(“utf-8”))

使用 base64() 模块解码字节码:

要解码字节码,即将字节码再次转换为字符串,请使用以下方法:

base64.b64decode("byte-code").decode("utf-8")

例子:

# 导入用于编码和解码字符串的 base64 模块import base64string = "haiyong"# 编码字符串encode = base64.b64encode(string.encode("utf-8"))print("str-byte : ", encode)# 解码字符串decode = base64.b64decode(encode).decode("utf-8")print("byte-str : ", decode)

输出:

F:\files>python base64.py str-byte : b"R3JlZWtzZm9yR3JlZWtz" byte-str : haiyong

在上面的例子中,“haiyong”字符串首先使用base64模块编码,即字符串被转换为字节码,然后在base64模块的帮助下再次将字节码解码为其原始字符串,即“haiyong”。

在输入时间内隐藏用户密码

# 使用 maskpass() 隐藏输入的密码并使用 base64() 对其进行加密import maskpass # to hide the passwordimport base64 # to encode and decode the password# 以用户名作为键和密码作为值的字典dict = {"Rahul": b"cmFodWw=","Sandeep": b"U2FuZGVlcA=="}# 创建密码的功能def createpwd():print("\n========Create Account=========")name = input("Username : ")# 使用提示 msg "Password :" 屏蔽密码pwd = maskpass.askpass("Password : ")# 对输入的密码进行编码encpwd = base64.b64encode(pwd.encode("utf-8"))# 在dict中附加用户名和密码dict[name] = encpwd# print(dict)# 登录功能def sign_in():print("\n\n=========Login Page===========")name = input("Username : ")# 使用提示 msg "Password :" 屏蔽密码pwd = maskpass.askpass("Password : ")# 对输入的密码进行编码encpwd = base64.b64encode(pwd.encode("utf-8"))# 以用户名作为dict中的键获取密码password = dict[name]if(encpwd == password):print("Successfully logged in.")else:print("Login Failed")# 调用函数createpwd()sign_in()

输出:

F:\files>python "userLogin.py"========Create Account=========Username : haiyongPassword : *****=========Login Page===========Username : haiyongPassword : *****Successfully logged in.

作者:海拥链接:https://juejin.cn/post/7066337015792402445

标签: Python

版权和免责申明

凡注有"三板富 | 专注于新三板的第一垂直服务平台"或电头为"三板富 | 专注于新三板的第一垂直服务平台"的稿件,均为三板富 | 专注于新三板的第一垂直服务平台独家版权所有,未经许可不得转载或镜像;授权转载必须注明来源为"三板富 | 专注于新三板的第一垂直服务平台",并保留"三板富 | 专注于新三板的第一垂直服务平台"的电头。

最新热点

精彩推送

 

Copyright © 1999-2020 www.3bf.cc All Rights Reserved 
三板富投资网  版权所有 沪ICP备2020036824号-16联系邮箱:562 66 29@qq.com