首页 > 编程语言 >Python:控制台输入密码passwod的方法

Python:控制台输入密码passwod的方法

时间:2023-10-29 13:06:38浏览次数:39  
标签:__ ch Python passwod sys input 控制台 password msvcrt



目录

  • input
  • getpass
  • termios
  • msvcrt


input

print(input("please input: "))
$ python3 demo.py 
please input: 123456
123456

缺点:不安全

getpass

import getpass

print(getpass.getpass("please input: "))
$ python3 demo.py 
please input: 
123456

缺点:看不到输入的位数

termios

import sys, tty, termios 

def getch():  
  fd = sys.stdin.fileno() 
  old_settings = termios.tcgetattr(fd) 
  
  try: 
    tty.setraw(sys.stdin.fileno()) 
    ch = sys.stdin.read(1) 
  finally: 
    termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) 
  return ch

def getpass(maskchar = "*"): 
  password = "" 
  while True: 
    ch = getch() 
    if ch == "\r" or ch == "\n": 
      print 
      return password 
    elif ch == "\b" or ord(ch) == 127: 
      if len(password) > 0: 
        sys.stdout.write("\b \b") 
        password = password[:-1] 
    else: 
      if maskchar != None: 
        sys.stdout.write(maskchar) 
      password += ch 

if __name__ == "__main__": 
  print ("Enter your password:",)
  password = getpass("*") 
  print ("your password is %s" %password)
$ python3 demo.py 
Enter your password:
******
your password is 123456

缺点:该方法仅在Linux上使用

msvcrt

import msvcrt,sys

def pwd_input():    
    chars = []   
    while True:  
        try:  
            newChar = msvcrt.getch().decode(encoding="utf-8")  
        except: 
            return input("你很可能不是在cmd命令行下运行,密码输入将不能隐藏:")  
        if newChar in '\r\n': # 如果是换行,则输入结束               
             break   
        elif newChar == '\b': # 如果是退格,则删除密码末尾一位并且删除一个星号   
             if chars:    
                 del chars[-1]   
                 msvcrt.putch('\b'.encode(encoding='utf-8')) # 光标回退一格  
                 msvcrt.putch( ' '.encode(encoding='utf-8')) # 输出一个空格覆盖原来的星号  
                 msvcrt.putch('\b'.encode(encoding='utf-8')) # 光标回退一格准备接受新的输入                   
        else:  
            chars.append(newChar)  
            msvcrt.putch('*'.encode(encoding='utf-8')) # 显示为星号  
    return (''.join(chars) )  
  
if __name__ == "__main__": 
    print("Please input your password:")
    pwd = pwd_input()  
    print("\nyour password is:{0}".format(pwd))
    sys.exit()

缺点:仅在Windows上使用

参考


标签:__,ch,Python,passwod,sys,input,控制台,password,msvcrt
From: https://blog.51cto.com/mouday/8079859

相关文章

  • [量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方
    MA均线时最基本的技术指标,也是最简单,最不常用的(通常使用EMA、SMA)。以下用两种不同的计算方法和两种不同的画图方法进行展示和说明。MA均线指标公式MA(N)=(C1+C2+C3+…+CN)/N目录方式一1.SQL直接查询均值2.使用pyplot进行绘图3.使用Grafana绘图方式二1.使用Python计......
  • python---数列内元素正倒相加实例
    a=list([1,21,5,3,1,23])b=list([7,4,6,3,2,1])x=int(input("请输入想从第几个数开始:"))y=int(input("请输入想到第几个数结束:"))c=[0,0,0,0,0,0]m=input("想要正着加吗?(T/F)")foriinrange(x-1,y):ifm=="T":c=a[i]+b[i]......
  • 21.10 Python 使用CRC32校验文件
    CRC文件校验是一种用于验证文件完整性的方法,通过计算文件的CRC值并与预先计算的CRC校验值进行比较,来判断文件是否发生变化,此类功能可以用于验证一个目录中是否有文件发生变化,如果发生变化则我们可以将变化打印输出,该功能可用于实现对特定目录的验证。首先实现文件与目录的遍历功能......
  • 21.12 Python 实现网站服务器
    Web服务器本质上是一个提供Web服务的应用程序,运行在服务器上,用于处理HTTP请求和响应。它接收来自客户端(通常是浏览器)的HTTP请求,根据请求的URL、参数等信息生成HTTP响应,并将响应返回给客户端,完成客户端的请求。Web服务器可以使用多种编程语言和技术实现,通过对套接字的处理并遵循HTML......
  • Python:基础&爬虫
    Python:基础&爬虫Python爬虫学习(网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。)一、基础知识准备Python在各个编程语言中比较......
  • 21.12 Python 实现网站服务器
    Web服务器本质上是一个提供Web服务的应用程序,运行在服务器上,用于处理HTTP请求和响应。它接收来自客户端(通常是浏览器)的HTTP请求,根据请求的URL、参数等信息生成HTTP响应,并将响应返回给客户端,完成客户端的请求。Web服务器可以使用多种编程语言和技术实现,通过对套接字的处理并遵循HTM......
  • python分析银行流水
    Python分析银行流水1.整体流程首先,让我们来看一下分析银行流水的整体流程。journeytitle分析银行流水的整体流程section下载银行流水section数据清洗和预处理section数据分析和可视化section结果呈现2.下载银行流水在这一步,我们需要从银行......
  • python合并行变量
    Python合并行变量在Python编程中,我们经常会遇到需要将多个变量合并为一个的情况。这种操作在处理数据结构、字符串连接等场景中非常常见。本文将介绍Python中合并行变量的几种常见方法,包括使用加号、join()函数、列表推导式等。使用加号合并变量在Python中,使用加号可以将多个变......
  • python获取企业微信的验证码
    Python获取企业微信的验证码介绍在企业微信中,验证码是一种常见的安全验证方式,用于确认用户的身份。作为一名开发者,你需要掌握如何使用Python来获取企业微信的验证码。本文将为你详细介绍整个获取验证码的流程,并提供相应的代码示例。流程概述下面是获取企业微信验证码的整个流程......
  • python返回所有
    Python返回所有的流程流程图graphLRA(开始)-->B(定义一个函数)B-->C(输入一个列表)C-->D(在函数内部创建一个空列表)D-->E(遍历输入的列表)E-->F(将遍历到的元素添加到空列表中)F-->G(返回结果列表)G-->H(输出结果列表)H-->I(结束)步骤详解步骤......