当前位置: 首页 > 面试题库 >

如何将密码回显为星号

董胡非
2023-03-14
问题内容

我试图弄清楚如何提示输入密码,并让用户输入的内容以星号(********)回显

所以最近,我进行了一个创建远程服务器的项目,该服务器可以使用Python中的套接字模块连接到该服务器。尚未完成,因为我正在制作用于连接服务器的控制台。

我正在尝试创建一个登录窗口,提示用户输入用户名和密码,尽管输入密码后,我正在寻找要打印的星号,例如普通密码输入(即-Sekr3t回显为: * *

)。

经过几天的研究,我几乎完成了,但是仍然有最后一个错误使我发疯(我完全无法解决)。注意-
我知道有一个getpass模块可以用来替换它,更加容易,但是没有任何echo并不是我要找的东西。

这是我到目前为止拥有的密码登录代码,我无法弄清为什么它不回显星号:

import msvcrt
import sys

def login(prompt = '> '):
   write = sys.stdout.write

   for x in prompt:
       msvcrt.putch(x)
   passw = ""

   while 1:
       x = msvcrt.getch()
       if x == '\r' or x == '\n':
           break
       if x == '\b':
           # position of my error
           passw = passw[:-1]
       else:
           write('*')
           passw = passw + x
   msvcrt.putch('\r')
   msvcrt.putch('\n')
   return passw

如果您仔细阅读了代码和/或使用IDLE之类的代码,您可能会注意到,当用户使用退格键时,存储的数据将被删除一个字符,而不会打印出星号。即-Sekr3t
+退格键= Sekr3,但是 * *
被回显。我们非常感谢您在输入退格键后如何删除最后一个星号的任何帮助。还要注意,许多代码来自getpass模块。我知道这不是一个很好的解释,也许不是那么出色的代码,但我仍在学习中-
请多多包涵。


问题答案:

您应该能够通过写入字符来消除星号\x08 \x08。在\x08将光标移回一个位置,空间将覆盖星号,那么最后\x08就会再次移动光标,将它放在正确的位置写入下一个*

我不知道如何确定何时键入退格键,但是您可以轻松地做到这一点:只需print repr(x)在调用后添加x = msvcrt.getch(),然后启动程序并点击退格键即可。



 类似资料:
  • 问题内容: 在Python中,有没有一种方法可以将用户输入的字符转换为星号,就像在许多网站上都能看到的那样? 例如,如果在输入密码时要求电子邮件用户登录其帐户,则该电子邮件将不会显示为字符,而是显示在每次笔划之后而没有任何时间延迟。 如果实际密码为,则输入时会显示为。 问题答案: 有一个 隐藏 用户输入的功能。

  • 问题内容: 如何从MySQL命令行客户端将MySQL 用户的密码更改为-表示无密码或- 更改密码? 问题答案: 您可以通过以下五个简单步骤来恢复MySQL数据库服务器密码。 步骤1 :停止MySQL服务器进程。 步骤#2 :使用–skip-grant-tables选项启动MySQL(mysqld)服务器/守护进程,以使其不提示输入密码。 步骤#3 :以root用户身份连接到mysql服务器。 步骤

  • 本文向大家介绍shell脚本实现输入密码显示星号,包括了shell脚本实现输入密码显示星号的使用技巧和注意事项,需要的朋友参考一下 补充:Shell输入密码时关闭屏幕回显  stty -echo read -p “请输入使用者密码: ” PASS stty echo 这样在输入密码的时候就不会显示了 如果大家感觉以上介绍的不够细致,大家可以参考下这篇文章: Shell脚本中实现把输入的密码转换为*

  • wgcloud忘记密码了怎么重置 找回密码

  • 本文向大家介绍linux sudo密码输入时显示星号的操作方法,包括了linux sudo密码输入时显示星号的操作方法的使用技巧和注意事项,需要的朋友参考一下 大家都知道我们在输入linux sudo密码的时候终端是不显示任何东西的,虽然这样安全,但是我们不知道我们按下的密码到底输入进去了没有,如果可以像在网站上登录账号密码的时候显示星号多好。 操作 其实要实现这个很简单,首先编辑sudo的配置文

  • 我正在尝试整合谷歌加登录在我的应用程序,所以我需要SHA1。 所以我试图通过命令行生成