Javaプログラム上で高機密性情報(パスワード文字列など)を扱う場合、セキュリティ的にはjava.lang.String
クラスよりchar
型の配列char[]
の方が好ましい。
Java言語の文字列String
インスタンスは不変(Immutable)なオブジェクトであり、メモリ上からデータ破棄されるタイミングはGCに依存する。一方char[]
ならばプログラマがメモリ上でのデータ存在期間を制御できる。
関連URL
- java - Why is char[] preferred over String for passwords? - Stack Overflow
- Java Cryptography Architecture(JCA) Reference Guide: Using Password-Based Encryption, パスワードベース暗号化の使用