Kirjautuminen

Haku

Tehtävät

Koodit: Java: Salasanan lukeminen tekstitilassa

Kirjoittaja: Metabolix

Kirjoitettu: 19.04.2013 – 19.04.2013

Tagit: ohjelmointitavat, koodi näytille, vinkki

Kun tekstitilassa toimivalle ohjelmalle syöttää tekstiä, merkit tavallisesti näkyvät samaan aikaan ruudulla. Salasana ei saisi näkyä. Javassa on salasanan lukemista varten erillinen metodi System.console().readPassword(), joka huolehtii, että merkit eivät näy. Metodi palauttaa salasanan merkkitaulukkona, ja se pitää tarvittaessa itse muuttaa String-olioksi.

char[] salasananMerkit = System.console().readPassword("Syötä salasana: ");
String salasana = new String(salasananMerkit);
System.console().printf("Hahaa! Salasanasi on %s!\n", salasana);

Metodista on myös versio, joka ei tulosta rivin alkuun kehotetta.

char[] salasananMerkit = System.console().readPassword();

Jos ohjelmaa ei ajeta tavalliseen tapaan tekstitilassa, metodia ei voi käyttää, koska oliota System.console() ei ole. Tämän voi halutessaan tarkistaa etukäteen.

String salasana;
if (System.console() == null) {
	System.out.printf("Ei voi lukea salasanaa turvallisesti! Yritetään tavallisesti.\n");
	salasana = new java.util.Scanner(System.in).nextLine();
} else {
	char[] salasananMerkit = System.console().readPassword("Syötä salasana: ");
	salasana = new String(salasananMerkit);
}
System.out.printf("Hahaa! Salasanasi on %s!\n", salasana);

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta