JavaRush /Java Blog /Random-ID /Bagaimana cara menyembunyikan karakter kata sandi selama ...
fatfaggy
Level 26
Киев

Bagaimana cara menyembunyikan karakter kata sandi selama input konsol?

Dipublikasikan di grup Random-ID
Ini pertanyaannya. Aplikasi konsol, pengguna memasukkan login dan kata sandi. Namun saat memasukkan kata sandi, setiap karakter kata sandi perlu “ditutupi” dengan tanda bintang, misalnya, atau, seperti di Linux, tidak menampilkan karakter apa pun saat memasukkan kata sandi. Saya menemukan opsi menggunakan utas terpisah untuk ini. Tampilannya seperti ini: 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(); } } } } } tetapi selama eksekusi, alih-alih "menimpa" karakter yang dimasukkan, banyak spasi yang ditampilkan di layar :) Saya mencoba menggunakan "\010*" alih-alih "\010", tetapi kemudian muncul tanda bintang ditambahkan ke setiap spasi)) Ketika "\b" lagi memiliki banyak spasi di output. Mungkin jika Anda menjalankannya dari baris perintah itu akan berhasil, tetapi secara teori - begitulah cara saya menulisnya. Saya mendengar bahwa ini adalah bug berprioritas rendah di Eclipse, tetapi tidak ada sepatah kata pun tentang ide tersebut.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION