Я учусь делать правильные криптографические реализации, и я подумал, что в качестве упражнения я создам зашифрованный текстовый редактор.
В моей первой попытке в качестве ключа использовался хэш SHA-512, предоставленный пользователем, и он работал нормально. Хотя я хранил IV в заголовке файла, незащищенный, и это беспокоило меня.
Затем я прочитал в stackoverflow, что я должен использовать SecretKeyFactory (я использую Java) для создания PBE, и теперь мне дополнительно нужно предоставить соль. Так что теперь я храню соль в заголовке, но это, похоже, разрушит всю цель иметь соль. Так как это должно работать? Когда Алиса выберет пароль для своего файла при сохранении, я должен сказать: «Вот, запомни это случайное число вместе с твоим паролем»? Я бы хотел, чтобы полученный файл можно было отправить Бобу по электронной почте, чтобы соль не могла храниться локально.
Пока мое приложение стоит, капельница и соль открыты. Я бы хотел, чтобы мой пользователь знал пароль только при отправке своего файла Бобу, оставаясь при этом криптографически защищенным, но я не могу найти примеров того, как это делается.
Спасибо за любую помощь!