


Программирование
+3Код на python
Решил сделать запрос пароля в терминале более безопасным.
Сначала решил использовать библиотеку getpass, но она кривая и не показывает вводимый пароль вовсе.
Потом примкнул к sys и getch, результат уже есть, но захотелось сделать так, чтобы при вводе, число показывалось на 0.2 секунды, а только потом заменялось звёздочкой.
1
import sys, getch, time
1
def get_password(prompt="Введите пароль: "):
1
print(prompt, end='', flush=True)
1
pwd = ""
1
while (ch := getch.getch()) not in '\r\n':
1
if ch in '\x08\x7f' and pwd:
1
pwd = pwd[:-1]
1
sys.stdout.write('\b \b')
1
else:
1
pwd += ch
1
sys.stdout.write(ch + '\b*')
1
sys.stdout.flush()
1
time.sleep(0.5)
1
print()
1
return pwd
1
print("Ваш пароль был успешно сохранен:", get_password())
Вроде должно работать, но "анимации" нету, что не так?
По дате
По рейтингу
Лови
123456789101112131415161718192021222324252627
import sys
import getch
import time
def get_password(prompt="Введите пароль: "):
print(prompt, end='', flush=True)
pwd = ""
while True:
ch = getch.getch()
if ch in '\r\n':
break
elif ch in '\x08\x7f':
if pwd:
pwd = pwd[:-1]
sys.stdout.write('\b \b')
else:
pwd += ch
sys.stdout.write(ch + '\b*')
sys.stdout.flush()
time.sleep(0.2)
print()
return pwd
password = get_password()
print("Ваш пароль был успешно сохранен:", password)