Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在 Python 中隐藏和加密密码?

如何在 Python 中隐藏和加密密码?

作者头像
海拥
发布于 2022-04-13 09:25:58
发布于 2022-04-13 09:25:58
2.3K00
代码可运行
举报
文章被收录于专栏:全栈技术全栈技术
运行总次数:0
代码可运行

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

maskpass()

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

安装:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install maskpass

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

  • askpass()
  • advpass()

askpass():

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import maskpass
pwd = maskpass.askpass()

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不回显的用户密码
import maskpass  # 隐藏密码
  
# 屏蔽密码
pwd = maskpass.askpass(mask="")  
print(pwd)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python password.py
Enter Password :
haiyong

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 回显密码并用井号标签 (#) 屏蔽
import maskpass # importing maskpass library

# prompt msg = Password and
# 用井号(#)屏蔽密码
pwd = maskpass.askpass(prompt="Password:", mask="#")
print(pwd)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python password.py
Password:###############
haiyong

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

advpass():

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 输入密码而不用左 CTRLimport maskpass # importing maskpass library

# 屏蔽密码
pwd = maskpass.advpass()
print('Password : ', pwd)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python password.py
Enter Password: ***************
Password : haiyong

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 输入密码而不用左 CTRLimport maskpass # importing maskpass library

pwd = maskpass.advpass() # masking the password
print('Password : ', pwd)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python password.py
Enter Password: haiyong
Password : haiyong

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

base64()

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# encoding the string
string = "haiyong"

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

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python strencode.py 
b'greeksforgreek'

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
base64.b64encode('string'.encode(“utf-8))  

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
base64.b64decode('byte-code').decode("utf-8")

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入用于编码和解码字符串的 base64 模块
import base64

string = "haiyong"

# 编码字符串
encode = base64.b64encode(string.encode("utf-8"))
print("str-byte : ", encode)

# 解码字符串
decode = base64.b64decode(encode).decode("utf-8")
print("byte-str : ", decode)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python base64.py 
str-byte : b'R3JlZWtzZm9yR3JlZWtz' 
byte-str : haiyong

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用 maskpass() 隐藏输入的密码并使用 base64() 对其进行加密
import maskpass # to hide the password
import 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()

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
F:\files>python "userLogin.py"
========Create Account=========
Username : haiyong
Password : *****

=========Login Page===========
Username : haiyong
Password : *****
Successfully logged in.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[1249]python实现rsa非对称加密解密
这两种方法都可以实现RSA加密,第一种方法使用了Python的内置模块rsa,而第二种方法使用了第三方库cryptography。请注意,第二种方法需要先安装cryptography库。两种方法的核心思路是相同的,即生成密钥对、加密和解密过程,只是具体的实现细节有所不同。
周小董
2023/12/25
1.6K0
Python 编程 | 连载 21 -序列化与加密模块
Python中 number、str、list、tuple、dict 都可以进行序列化,其中字典是最常进行序列化的数据结构,注意集合 set 是不能进行序列化的。
RiemannHypothesis
2022/09/26
3590
Python 编程 | 连载 21 -序列化与加密模块
国密 SM2 公钥加密密文格式记录
最近发现,使用外部开源的国密库(https://github.com/duanhongyi/gmssl)进行 SM2 加密之后无法在腾讯云 KMS 系统上做解密,于是笔者针对这个问题做了一些调研、分析,最后解决了这个问题,这篇文章用来记录解决此问题的一些关键步骤和分析思路。
bowenerchen
2024/12/18
2.1K3
国密 SM2 公钥加密密文格式记录
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64(编码) - Python/JS实现
本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全哈希算法 SHAI (4)散列消息鉴别码 HMAC (5)对称性加密算法 AES,DES (6)非对称性加密算法 RSA
EXI-小洲
2022/12/13
4.1K0
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64(编码) - Python/JS实现
隐藏的换行符导致Base64加密解密失败
平日里偶尔会在调用API服务时,需要对用户与密码认证信息进行Base64加密处理,一般都用网上的在线工具进行直接操作获取。但是在客户现场环境中并没有互联网访问权限,便只能是寻求其他方法来实现Base64加密操作。起初是使用Python中的base64模块进行加密,只是操作起来较麻烦些,因为不同客户环境不一样而且也不能拷贝外部文件进去,只能是在Python交互模式下手工敲些代码。可是长久以往并不是办法,后来便发现了Linux系统其实大部都自带Base64的模块,于是便开始探索如何在Linux系统中使用Base64模块进行加解密的操作方式。
凡梦星尘
2024/11/20
1940
PHP的几个常用加密函数
在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数
wangxl
2018/07/27
8810
Python实现PBKDF2_SHA256加密密码
加密保存格式:pbkdf2_sha256迭代次数盐哈希值 admin可能的结果:pbkdf2_sha25610000yzsusUJwrGfonw+ZzVxlnA==vgf/OgLf5C4wtQLtfNY9d68H+hxgv8eqZ0mwfxCqqeU=
超级小的大杯柠檬水
2024/12/06
2110
2018年7月21日python中的加密和解密
·在函数调用执行过程中: 如果出现return,return中的函数执行完则本函数就运行结束,return下面的语句不会再继续执行,所以return使 用时也应该注意,如果是调用函数的下面还有要输出的东西,可以不用写return,直接写函数名调用
武军超
2018/09/27
1.1K0
[ffffffff0x] 浅谈web安全之前端加密
通过burp抓包可以看到加密信息. 很明显可以看到 password 参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功。所以我们需要明白基础的加密概念,与常见的加密方式。
r0fus0d
2020/12/21
1.5K0
[ffffffff0x] 浅谈web安全之前端加密
一篇文章理清python的字符编码
最近在用python接受网络数据的时候,输出时总是遇到编码的问题,虽然都解决了,但深刻意识到自己其实对python的编码并没有清晰的认识,所以才会遇到这样的问题。今天就此总结一下,以免日后夜长梦多。
梦飞
2022/06/23
7600
一篇文章理清python的字符编码
BugKu-WEB-1
这里是Bugku的CTF题目(主流情况下我一般都只会玩攻防世界的,难度稍微大一些,我之前的笔记分类有详细分成基础篇和高手篇写了writeup,感兴趣的可以去看看) 所用环境以及做题思路只在当时写下writeup时适用,若之后做出改动可与我联系,做出相应更改。 作者:李世荣
Baige
2022/03/21
5120
BugKu-WEB-1
浅谈Python在CTF中的运用
现在大部分的程序猿对网络安全这个领域几乎一点都不了解,不要问为什么,我接触过很多程序猿(有不少是大厂优秀的程序猿,甚至没有一点安全意识,对网络安全这个领域也没什么具体或者抽象的概念),先来科普一下CTF,CTF在百度百科里的官方释义如下:
安恒网络空间安全讲武堂
2019/03/08
2.7K0
浅谈Python在CTF中的运用
常见密码和编码总结 CTF中Crypto和Misc必备
可以分作三部分组成 第一部分是:ASCII非打印控制字符 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符
中龙技术
2022/09/30
8.1K0
常见密码和编码总结 CTF中Crypto和Misc必备
【Python爬虫】一招搞定发送中文HTTP请求头
有时需要将HTTP请求头的值设为中文,但如果直接设成中文,会抛出异常,例如,下面的代码为Chinese请求头设置了中文。
蒙娜丽宁
2021/03/11
1.7K0
加密与安全_探索常用编码算法
计算机加密技术旨在实现上述目标。现代计算机密码学建立在严格的数学理论基础上,并逐渐发展成为一门科学。对于大多数开发者来说,设计安全的加密算法是一项艰巨的任务,验证加密算法的安全性则更加困难。目前认为安全的加密算法也只是尚未被攻破。因此,为了编写安全的计算机程序,我们应遵循以下原则:
小小工匠
2024/05/26
1910
加密与安全_探索常用编码算法
在 Python 中隐藏和加密密码?
在当前的数字时代,安全至关重要。在我们作为开发人员的工作中,我们经常处理密码等机密数据。必须使用正确的密码加密和隐藏方法来保护这些敏感数据。Python 中许多可访问的技术和模块可以帮助我们实现这一目标。通过对可用实现的基本思想和示例的解释,本文研究了在 Python 中隐藏和加密密码的最佳技术和方法。
很酷的站长
2023/08/11
7690
在 Python 中隐藏和加密密码?
Python Base64模块的使用
64个字符: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Python碎片公众号
2021/02/26
1.3K0
Python Base64模块的使用
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。
小羽网安
2024/07/02
5830
网络安全&密码学—python中的各种加密算法
python爬虫以及后端开发--实用加密模板整理
都是作者累积的,且看其珍惜,大家可以尽量可以保存一下,如果转载请写好出处https://www.cnblogs.com/pythonywy
小小咸鱼YwY
2020/08/24
7300
python 加密解密
MD5   import hashlib   c = raw_input('输入字符:') #python3为input b = hashlib.md5()   b.update(c.encode(encoding='utf-8'))   print ('MD5加密前:'+ c)   print ('MD5加密后:'+b.hexdigest())
py3study
2020/01/02
3.4K0
相关推荐
[1249]python实现rsa非对称加密解密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验