2011-01-27 5 views
11

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

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

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

ответ

-5

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

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

+0

Спасибо за ответ. Просто чтобы подтвердить, вы имеете в виду один вызов init() для каждого doFinal()? – Firefox

+9

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

+5

GregS правильный. Этот ответ неверен. К сожалению, мастера stackoverflow не позволят мне отменить мою ошибочную позицию, так как теперь она «заблокирована». Плохие манеры выбора дизайна. – Nemi

Смежные вопросы