2011-01-27 16 views
11

¿Puedo utilizar el mismo objeto Cipher en múltiples métodos ya que los argumentos del método getInstance y init no cambian?¿Es reutilizable el objeto Cipher?

Por ejemplo, supongamos que varias partes de la aplicación utilizan el método decrypt en una clase de utilidad. Todos los valores encriptados pasados ​​se generan usando la misma clave y algoritmo. Entonces, ¿puedo reutilizar el mismo objeto Cipher?

¿Realmente vale la pena preocuparse por las creaciones múltiples de Cipher (que pueden dar lugar a la creación de objetos KeySpec, SecretKey)?

Respuesta

-5

Puede reutilizar el objeto de cifrado pero debe inicializarlo siempre llamando a init() para cada operación.

Si le preocupa la recreación de KeySpec, debe guardarlo y usar el mismo valor en múltiples init().

+0

Gracias por la respuesta. Solo para confirmar, ¿te refieres a una invocación de init() para cada doFinal()? – Firefox

+9

Como los Javadocs para doFinal() indican claramente, "Al finalizar, este método restablece este objeto de cifrado al estado en que estaba cuando se inicializó previamente mediante una llamada a init. Es decir, el objeto se reinicia y está disponible para cifrar o descifrar (dependiendo del modo de operación que se especificó en la llamada a init) más datos ". –

+5

GregS es correcto. Esta respuesta es incorrecta Lamentablemente, los asistentes de stackoverflow no me permitirán deshacer mi voto erróneo ya que ahora está "bloqueado". Malos magos de elección de diseño. – Nemi

Cuestiones relacionadas