Console Class & Secure Password Input
1Concept
System.console() provides secure interactive terminal access. The readPassword() method suppresses console echoing and returns a char[] array rather than a String, allowing developers to overwrite and zero-out sensitive passwords in memory immediately after verification.
2Architecture Diagram
User Types Password ---> [ System.console().readPassword() ] ---> Stored in char[] array
|
Arrays.fill(pwd, '0')
v
Password wiped clean from RAM!3Code Example
Core Java
import java.util.Arrays;
public class SecureConsoleDemo {
public static void main(String[] args) {
// Demonstrating char[] password wipe technique
char[] password = new char[]{'S', 'e', 'c', 'u', 'r', 'e', 'P', '@', 's', 's'};
System.out.println("Password verification successful.");
// Crucial security step: wipe sensitive memory immediately!
Arrays.fill(password, '0');
System.out.println("Password memory array zeroed out: " + new String(password));
}
}4Expected Output
Password verification successful. Password memory array zeroed out: 0000000000
5Key Takeaways
- ✓Never store passwords in String objects; Strings reside in the String Constant Pool and cannot be cleared until GC runs.
- ✓System.console() returns null when running inside IDEs (Eclipse, IntelliJ) or headless background processes.
- ✓Arrays.fill(charArray, '0') immediately clears sensitive authentication tokens from heap RAM.