Ini semua alasannya, kita harus memilih array char [] daripada String untuk kata sandi.
1. Karena String tidak dapat diubah di Jawa, jika Anda menyimpan kata sandi sebagai teks biasa, kata itu akan tersedia dalam memori sampai pengumpul Sampah mengosongkannya, dan karena String digunakan dalam kumpulan String untuk penggunaan kembali, ada kemungkinan yang cukup tinggi bahwa itu akan tetap tersimpan dalam memori untuk waktu yang lama, yang menimbulkan ancaman keamanan.
Karena siapa pun yang memiliki akses ke dump memori dapat menemukan kata sandi dalam teks yang jelas, itu alasan lain Anda harus selalu menggunakan kata sandi terenkripsi daripada teks biasa. Karena String tidak dapat diubah, tidak mungkin konten String dapat diubah karena perubahan apa pun akan menghasilkan String baru, sementara jika Anda menggunakan karakter [] Anda masih dapat mengatur semua elemen sebagai kosong atau nol. Jadi menyimpan kata sandi dalam susunan karakter jelas mengurangi risiko keamanan mencuri kata sandi.
2. Java sendiri merekomendasikan menggunakan metode getPassword () dari JPasswordField yang mengembalikan karakter [], alih-alih metode getText () yang sudah usang yang mengembalikan kata sandi dalam teks yang jelas yang menyatakan alasan keamanan. Adalah baik untuk mengikuti saran dari tim Java dan mematuhi standar daripada menentangnya.
3. Dengan String selalu ada risiko mencetak teks biasa dalam file log atau konsol tetapi jika Anda menggunakan Array Anda tidak akan mencetak konten array, tetapi sebaliknya lokasi memorinya akan dicetak. Meski bukan alasan sebenarnya, itu tetap masuk akal.
String strPassword="Unknown";
char[] charPassword= new char[]{'U','n','k','w','o','n'};
System.out.println("String password: " + strPassword);
System.out.println("Character password: " + charPassword);
String password: Unknown
Character password: [C@110b053
Dirujuk dari blog ini . Saya harap ini membantu.