1. Обзор
В этой статье мы объясним, почему мы должны использовать массив char[]
для представления паролей вместо String
в Java.
Обратите внимание, что в этом руководстве основное внимание уделяется способам манипулирования паролями в памяти, а не фактическим способам их хранения, которые обычно обрабатываются на уровне сохраняемости.
Мы также предполагаем, что не можем контролировать формат пароля (например, пароль исходит от стороннего API в виде строки
). Хотя использование объекта типа java.lang.String
для управления паролями кажется очевидным , сами разработчики Java рекомендуют вместо этого использовать char[] .
Например, если мы посмотрим на JPasswordField javax.swing
,
то увидим, что метод getText()
, который возвращает String
, устарел, начиная с Java 2, и заменен методом getPassword()
, который возвращает char[]
.
Итак, давайте рассмотрим несколько веских причин, почему это так.