Tôi cố gắng để tìm ra cách để nhắc nhập mật khẩu, và có những người sử dụng đầu vào lặp lại như dấu hoa thị (********
)Làm thế nào để nhận mật khẩu lặp lại như dấu sao
Vì vậy, thời gian gần đây, tôi đã về dự án tạo ra một máy chủ từ xa có thể được kết nối với việc sử dụng môđun socket trong Python. Nó chưa được thực hiện, như tôi đang trong quá trình làm cho giao diện điều khiển được sử dụng để kết nối với máy chủ.
Tôi đang cố gắng tạo cửa sổ đăng nhập nơi người dùng được nhắc nhập Tên người dùng và Mật khẩu của họ, mặc dù khi mật khẩu được nhập Tôi đang tìm dấu sao được in, như nhập mật khẩu chung (ví dụ: - Sekr3t là echo'd như: * * * * * *).
Sau nhiều ngày nghiên cứu về nó, tôi gần xong nhưng vẫn còn một lỗi cuối cùng khiến tôi phát điên (tôi hoàn toàn không thể giải quyết được). Lưu ý - Tôi biết có một mô-đun passpass có thể được sử dụng để thay thế điều này, dễ dàng hơn nhiều, nhưng không có gì echo'd không chính xác những gì tôi đang tìm kiếm.
Dưới đây là mã mật khẩu đăng nhập tôi có cho đến nay, và tôi không thể tìm ra lý do tại sao nó không vang dấu hoa thị:
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
>
Nếu bạn đọc qua các mã và/hoặc chạy nó thông qua một cái gì đó giống như IDLE, bạn có thể nhận thấy rằng khi người dùng back-space, dữ liệu được lưu trữ bị xóa bởi một ký tự, nhưng các dấu hoa thị được in thì không. tức là - Sekr3t + backspace = Sekr3, nhưng * * * * * * lại bị bỏ qua. Bất kỳ trợ giúp về cách xóa dấu hoa thị cuối cùng khi backspace được nhập sẽ được đánh giá rất nhiều. Cũng lưu ý, rất nhiều mã này là từ mô-đun getpass. Tôi biết nó không phải là một lời giải thích tuyệt vời, và có lẽ không phải là mã vĩ đại nhưng tôi vẫn đang học - hãy chịu đựng tôi.
Bạn thực sự nên xem xét sử dụng [ 'getpass()'] (http://docs.python.org/library/getpass.html#getpass. bỏ qua). Tôi nhận ra rằng bạn đã tìm thấy điều này nhưng không lặp lại bất cứ điều gì thực sự ** cải thiện an ninh **. – ThiefMaster
@ThiefMaster Tôi có thể thấy nó sẽ cải thiện bảo mật như thế nào, nhưng ứng dụng này chủ yếu dành cho một số bạn bè của tôi ở một trong các mạng chơi game của tôi, những người không giỏi về máy tính, vì vậy tôi đang cố gắng làm cho nó ở một nơi an toàn và thân thiện với người dùng - đó là lý do tại sao tôi chọn thử và có dấu hoa thị lặp lại như trái ngược với không có gì. –
Kiểm tra mô-đun 'curses' –