Domanda

Sto cercando di mascherare una password in Java. Sun Java ha suggerito un modo per mascherare una password come segue.

Mascherare una password

Si utilizza un modo semplice per farlo.

public void run () {
  stop = true;
  while (stop) {
     System.out.print("\010*");
 try {
    Thread.currentThread().sleep(1);
     } catch(InterruptedException ie) {
        ie.printStackTrace();
     }
  }
}

Ma questo approccio ha diversi svantaggi.

  1. Se l'utente utilizza i tasti freccia + Delete la password viene rivelato.

  2. Se l'utente preme il tasto 2 chiavi allo stesso tempo (estremamente alta velocità di battitura) alcuni caratteri non ottiene mascherati.

Do you guys pensare a un modo che può ottenere una corretta mascheratura 100%?

È stato utile?

Altri suggerimenti

È ora possibile utilizzare System.Console ();

Console c = System.console();
if (c == null) {
    System.err.println("No console.");
    System.exit(1);
}


char [] password = c.readPassword("Enter your password: ");

Utilizzando alcune chiamate di sistema (su Windows e UNIX) è possibile disabilitare l'eco di caratteri da consolare. Questo è ciò che fa System.Console (), ma funziona anche in Java.

sto usando JNA per mappare alcune syscall di Unix e Windows in un ramo privato di jline:

Se avete bisogno di codice di esempio lasciare un commento.

Con il JDK 6.0, si hanno i sorgenti di Java delle classi, tra cui console: Ho appena verificato e questa classe ha solo Java 5.0 dipendenze

.

Quindi, nel progetto, è possibile creare una copia di questa classe Console, e quindi utilizzare il metodo readpassword. Non ho provato, ma dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top