JavaRush /Blog Java /Random-VI /Làm cách nào để ẩn các ký tự mật khẩu trong khi nhập bảng...
fatfaggy
Mức độ
Киев

Làm cách nào để ẩn các ký tự mật khẩu trong khi nhập bảng điều khiển?

Xuất bản trong nhóm
Đây là câu hỏi. Ứng dụng Console, người dùng nhập thông tin đăng nhập và mật khẩu. Nhưng khi nhập mật khẩu, cần phải “che dấu” từng ký tự của mật khẩu bằng dấu hoa thị chẳng hạn, hoặc như trong Linux, đơn giản là không hiển thị bất kỳ ký tự nào khi nhập mật khẩu. Tôi tìm thấy một tùy chọn sử dụng một chủ đề riêng cho việc này. Nó trông giống như thế này: package main; import java.io.*; public class Main { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter username: "); String user = in.readLine(); Thread hide = new PasswordsHider("Enter password: "); hide.start(); String pass = in.readLine(); hide.interrupt(); } private static class PasswordsHider extends Thread { public PasswordsHider(String prompt) { super("Hiding passwords thread"); System.out.print(prompt); } @Override public void run() { while (!isInterrupted()) { System.out.print("\010"); try { Thread.sleep(1); } catch (InterruptedException e) { //e.printStackTrace(); } } } } } nhưng trong quá trình thực thi, thay vì "ghi đè" các ký tự đã nhập, một loạt khoảng trắng chỉ hiển thị trên màn hình :) Tôi đã thử sử dụng "\010*" thay vì "\010", nhưng sau đó có dấu hoa thị được thêm vào mỗi khoảng trắng)) Khi "\b" lại có nhiều khoảng trắng ở đầu ra. Có thể nếu bạn chạy nó từ dòng lệnh thì nó sẽ hoạt động, nhưng trên lý thuyết - đây là cách tôi viết nó. Tôi nghe nói rằng đây là một lỗi có mức độ ưu tiên thấp trong Eclipse nhưng lại không nói gì về ý tưởng này.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION