Comment masquer un mot de passe à partir 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 exception NullPointerException ...
Un exemple complet?. Exécutez ce code: (NB: il est préférable d'exécuter cet exemple dans la console et non depuis 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();
}
}
Vous utiliseriez la classe Console
char[] password = console.readPassword("Enter password");
Arrays.fill(password, ' ');
En exécutant readPassword, l'écho est désactivé. De même, une fois le mot de passe validé, il est préférable d'écraser toutes les valeurs du tableau.
Si vous exécutez cela à partir d'une idée, cela échouera, veuillez consulter cette explication pour une réponse complète: Explained
Console console = System.console();
String username = console.readLine("Username: ");
char[] password = console.readPassword("Password: ");
Si vous avez affaire à un Java tableau de caractères (tels que les caractères de mot de passe que vous lisez à partir de la console), vous pouvez le convertir en une chaîne JRuby avec la suivante Ruby code:
# 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 "