Мне нужно декодировать массив символов Base64 без преобразования его в String. Массив символов - это пароль, и по соображениям безопасности мне не разрешено преобразовывать его в String (это требование не подлежит обсуждению).Безопасное декодирование массива символов Base64 в Java
java.util.Base64.Decoder. decode способ принимает byte[]
, ByteBuffer, и String, но не char[]
.
Проблемы безопасности использования строки для хранения конфиденциальных данных
на комментарий Джима Арчера
- Строки неизменны
- Они могут быть удалены только из памяти сборщика мусора (который не может быть принужден к этому)
Вы можете использовать [этот ответ] (http://stackoverflow.com/a/9670279/1361506), чтобы преобразовать ваш 'символ []' в 'byte []' без промежуточной 'String', а затем вызывать' decode (byte []) '. – azurefrog
Почему метод декодирования с использованием байтового массива непригоден? – Raedwald
BTW, если вы (или кто-либо читающий) не знаете, проблема безопасности возникает из-за того, что (1) строки неизменяемы и (2) они висят, ожидая, когда GC их исправит, и вы не можете заставить GC для этого. С другой стороны, StringBuffer решает эту проблему, потому что вы можете уничтожить содержимое, когда закончите с ним. –