Является ли объект Cipher повторно используемым?
Можно ли использовать один и тот же объект Cipher
для нескольких методов, поскольку аргументы метода getInstance
и init
не изменяются?
Например, предположим, что несколько частей приложения используют метод decrypt
в классе утилиты. Все переданные зашифрованные значения генерируются с использованием одного и того же ключа и алгоритма. Итак, можно ли повторно использовать один и тот же объект Cipher
?
Стоит ли беспокоиться о нескольких творениях Cipher
(что может привести к созданию объектов KeySpec
, SecretKey
)?
Ответы
Ответ 1
Вы можете повторно использовать объект шифрования, но вы должны его инициализировать каждый раз, вызывая init() для каждой операции.
Если вы беспокоитесь о воссоздании KeySpec, вы должны сохранить его и использовать одно и то же значение в нескольких init().
Ответ 2
Да.
Как указано в документации:
По завершении этот метод сбрасывает этот объект шифрования в состояние, в котором он находился, когда он был предварительно инициализирован с помощью вызова init. То есть объект сбрасывается и доступен для шифрования или дешифрования (в зависимости от режима работы, который был указан при вызове init) большего количества данных.