JavaRush /Java Blog /Random-TL /Paano itago ang mga character ng password sa panahon ng c...
fatfaggy
Antas
Киев

Paano itago ang mga character ng password sa panahon ng console input?

Nai-publish sa grupo
Ito ang tanong. Console application, ang user ay nagpasok ng login at password. Ngunit kapag nagpapasok ng isang password, kinakailangan na "i-mask" ang bawat karakter ng password na may asterisk, halimbawa, o, tulad ng sa Linux, hindi lamang magpakita ng anumang mga character habang ipinapasok ang password. Nakakita ako ng opsyon gamit ang isang hiwalay na thread para dito. Mukhang ganito: 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(); } } } } } ngunit sa panahon ng pagpapatupad, sa halip na "i-overwriting" ang mga ipinasok na character, isang bungkos ng mga puwang ang ipinapakita lamang sa screen :) Sinubukan kong gumamit ng "\010*" sa halip na "\010", ngunit pagkatapos ay isang asterisk ay idinagdag sa bawat puwang)) Kapag ang "\b" muli ay may maraming puwang sa output. Siguro kung patakbuhin mo ito mula sa command line ito ay gagana, ngunit sa teorya - ito ay kung paano ko isinulat ito. Narinig ko na ito ay isang mababang priyoridad na bug sa Eclipse, ngunit hindi isang salita tungkol sa ideya.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION