Является ли объект Cipher повторно используемым?

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

Например, предположим, что несколько частей приложения используют метод decrypt в классе утилиты. Все переданные зашифрованные значения генерируются с использованием одного и того же ключа и алгоритма. Итак, можно ли повторно использовать один и тот же объект Cipher?

Стоит ли беспокоиться о нескольких творениях Cipher (что может привести к созданию объектов KeySpec, SecretKey)?

Ответ 1

Вы можете повторно использовать объект шифрования, но вы должны его инициализировать каждый раз, вызывая init() для каждой операции.

Если вы беспокоитесь о воссоздании KeySpec, вы должны сохранить его и использовать одно и то же значение в нескольких init().

Ответ 2

Да.

Как указано в документации:

По завершении этот метод сбрасывает этот объект шифрования в состояние, в котором он находился, когда он был предварительно инициализирован с помощью вызова init. То есть объект сбрасывается и доступен для шифрования или дешифрования (в зависимости от режима работы, который был указан при вызове init) большего количества данных.