GetPassWarning: не может контролировать эхо на терминале - PullRequest
0 голосов
/ 26 января 2019

Я создаю игру в кости и хочу ввести хеширование пароля, и пользователь должен ввести свое имя пользователя и пароль.Я новичок в хешировании, и я попробовал это:

from getpass import getpass
from hashlib import pbkdf2_hmac as pwhash

def login(users):
    username = input('please enter username: ')
    if username not in users:
        print("access denied")
        exit()

    password_hash = None
    while password_hash != users[username]:
        password_hash = pwhash("sha256", getpass().encode("ascii"), b"t4h20p8g24j", 100000)

    print("access granted")
    return username
login(users)

Затем я получил следующее сообщение на консоли:

GetPassWarning: Can not control echo on the terminal.

, поэтому я попробовал другой ide (перешел от простоя к intellij pycharm) все же возникла та же проблема.

Я видел другие вопросы, но an environment where stdin, stdout and stderr are connected to /dev/tty, or another PTY-compliant device. для меня не имеет смысла, я пытался комментировать, но мне нужно больше респ.Также я работаю на PyCharm не простаивает

1 Ответ

0 голосов
/ 27 января 2019

Ввод был отражен, потому что цикл while никогда не завершался, так как условие не было выполнено: пароль в словаре был сохранен в виде простого текста просто нужно хешировать значения в словаре.

def check_password(hashed_password, user_password):
    password, salt = hashed_password.split(':')
    return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...