49 votes

Masquage de la saisie du mot de passe depuis la console : Java

Comment masquer un mot de passe de l'entrée de la console ? J'utilise Java 6.

J'ai essayé d'utiliser console.readPassword() , mais cela ne fonctionnerait pas. Un exemple complet pourrait m'aider en fait.

Voici mon code :

 import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test 
{   
    public static void main(String[] args) 
    {   
        Console console = System.console();

        console.printf("Please enter your username: ");
        String username = console.readLine();
        console.printf(username + "\n");

        console.printf("Please enter your password: ");
        char[] passwordChars = console.readPassword();
        String passwordString = new String(passwordChars);

        console.printf(passwordString + "\n");
    }
}

Je reçois une NullPointerException...

68voto

bilash.saha Points 3614

Un exemple complet ?. Exécutez ce code : (NB : il est préférable d'exécuter cet exemple dans la console et non à partir d'un IDE, car la méthode System.console() peut retourner null dans ce cas.)

 import java.io.Console;
public class Main {

    public void passwordExample() {        
        Console console = System.console();
        if (console == null) {
            System.out.println("Couldn't get Console instance");
            System.exit(0);
        }

        console.printf("Testing password%n");
        char[] passwordArray = console.readPassword("Enter your secret password: ");
        console.printf("Password entered was: %s%n", new String(passwordArray));

    }

    public static void main(String[] args) {
        new Main().passwordExample();
    }
}

2voto

user1525941 Points 10
Console console = System.console();
String username = console.readLine("Username: ");
char[] password = console.readPassword("Password: ");

0voto

Daniel Huffman Points 11

Si vous avez affaire à un tableau de caractères Java (comme des caractères de mot de passe que vous lisez à partir de la console), vous pouvez le convertir en une chaîne JRuby avec le code Ruby suivant :

 # GIST: "pw_from_console.rb" under "https://gist.github.com/drhuffman12"

jconsole = Java::java.lang.System.console()
password = jconsole.readPassword()
ruby_string = ''
password.to_a.each {|c| ruby_string << c.chr}

# .. do something with 'password' variable ..    
puts "password_chars: #{password_chars.inspect}"
puts "password_string: #{password_string}"

Voir aussi " https://stackoverflow.com/a/27628738/4390019 " et " https://stackoverflow.com/a/27628756/4390019 "

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X