Я работаю над клиент-серверным приложением на Java, которое собирается использовать шифрование с закрытым ключом .
В настоящее время у меня есть класс со статическим объектом Cipher
класс, который я инициализирую следующим образом: myCipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
.
Теперь мой вопрос: у меня двусторонняя связь, должен ли я иметь отдельный объект Cipher
для каждого пути (один для шифрования и один для дешифрования)и использовать тот же вектор инициализации?Или мне просто использовать один и тот же объект и вызвать Cipher.init()
, чтобы изменить режимы в зависимости от того, шифрую я или расшифровываю?
Имеет смысл иметь отдельные объекты в моей голове, но я просто хотел быть уверен,,Я пробовал поиск в Google, но в большинстве примеров шифрование показывается только одним способом.
В настоящее время я отправляю вектор инициализации на сервер в незашифрованном виде, это правильно, или есть уязвимость в безопасности?
Или я приближаюсьэто совсем не так?
Спасибо.