Кэшировать содержимое хранилища ключей и преобразовать его в вход

StackOverflow https://stackoverflow.com/questions/3510580

Вопрос

Я использую AES для выполнения шифрования симметричного ключа. Я сохраняю ключ в защищенном паровом хранилище ключей.

API раскрывает следующее для загрузки клавиши из магазина клавиш

keyStore.load(inputStream, keyStorePassword.toCharArray()); 

Поэтому каждый раз, когда я хочу разрушить или расшифровать Чтобы читать контент каждый раз заново.

Можете ли вы кого-нибудь, пожалуйста, помогите мне с стратегией хранения его в памяти и сразу после доступа к ней и преобразованию в входной потерю?

Примечание :Я попытался прочитать содержимое хранилища ключей в String (UTF-8) и преобразовать его в InputStream и передал его API. Но он выплюнул после исключения

java.io.ioexception: неверная форма хранилища ключей

Это было полезно?

Решение 2

Спасибо за ответы. Я за приведенную ниже альтернативу.

Я бы раз загрузил хранилище ключа и извлекил секретный клавиш и назначил переменную экземпляра или класса класса, который вы используете, а затем использовать SecretKey всякий раз, когда нужно зашифровать или расшифровать

Другие советы

Ключевой магазин находится в каком -то бинарном формате. Преобразование его в строку UTF-8 не является хорошим. Вы можете использовать ByteArrayInputStream который использует байтовый буфер.

Но: на мой взгляд не учитывается, когда дело доходит до оптимизации производительности. Вы должны сделать некоторое профилирование, чтобы проверить, действительно ли это влияет на производительность. Потому что это не должно. Операционная система тоже делает кэш, и, скорее всего, не будет читать один и тот же файл с диска снова и снова, если в то же время она не изменилась. Программисты, как правило, чрезвычайно плохи в оценке того, какие части программы являются свиньями, а какие - нет.

Также: у него есть причина, по которой обычно предоставляются пароли через char Массивы: Вы имеете полный контроль над содержанием массива и можете очистить его, как только он больше не нужен. Пароль должен оставаться в памяти как можно короче. У вас нет такого контроля с простыми струнами (вы не знаете, когда они собирают мусор).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top