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);