В приложении я хочу хранить конфиденциальные данные (которые могут быть произвольно большими), чтобы впоследствии их можно было использовать для исследования.Дело в том, что я не хочу, чтобы данные лежали без защиты, поэтому я хочу зашифровать их перед сохранением.
На другом компьютере (в более надежной среде) я хочу расшифровать эти данные позже.Расшифровка должна быть возможна с помощью легкодоступных инструментов, например OpenSSL.Теперь мой вопрос: как мне все это сделать?
Я уже знаю абстрактные шаги:
- Раз и навсегда сгенерируйте пару открытый / закрытый ключ.
- Зашифруйте
byte[]
в Java с помощью открытого ключа, сохраните его где-нибудь. - Скопируйте зашифрованные данные на «более безопасный» компьютер.
- Расшифруйте сохраненные данные с помощью простой команды OpenSSLline.
Теперь мне не хватает деталей:
- Какая пара ключей мне нужна?
- Какую схему шифрования следует использовать?использовать?(это, вероятно, что-то вроде «rsa-шифровать симметричный ключ, а затем шифровать данные этим ключом»)
- Как выглядит простая командная строка OpenSSL?
[Обновление 2011-02-13]
После небольшого исследования я нашел страницу, которая точно описывает, что я хочу сделать: http://blog.altudov.com/2010/09/27/using-openssl-for-asymmetric-encryption-of-backups/. В основном ответом на мой шаг 4 является эта командастрока:
openssl smime -decrypt \
-in data.smime -binary -inform DER \
-inkey key.pem \
-out data
Теперь мой вопрос: как я могу сгенерировать файл из Java, формат которого совместим с OpenSSL, чтобы я мог распаковать его с помощью этой командной строки?Я хочу делать это сотнями раз в секунду, поэтому запуск внешнего процесса кажется слишком медленным.Вот почему я хочу сделать это прямо в Java.