Это одна из тех лучших практик. Это не имеет большого смысла, но мы делаем это для легкой жизни.
Если пароль находится в памяти, переполнение буфера может позволить его прочитать. Или это может быть сохранено в дампе ядра или образе гибернации. Использование изменяемого char[]
позволяет уничтожать данные после, как мы надеемся, узкого окна, если оно не было скопировано в строку, скопировано в другое место, возможно, оно находится в буферах, сборщик мусора любит перемещать объекты и т. Д.
В Swing есть забавный пример, где JPasswordField
предоставляет char[]
способ чтения данных, но, например, создаст String
из данных, если у него есть прослушиватель действий (что очень часто встречается). способ его использования).